首页 > 解决方案 > na.omit 似乎正在删除我的数据框中的负值?

问题描述

我试图在我的数据框中找出特定位置(CB、HK 等)的不同温度范围,它看起来像这样:

'头(加入)'

OTU_num location    date otus Depth   DO Temperature   pH Secchi.Depth
1 Otu0001       CB 03JUN09   21   0.0 7.60        21.0 3.68           NA
2 Otu0001       CB 03JUN09   21   0.5 8.27        16.4 3.68           NA
3 Otu0001       CB 03JUN09   21   1.0 7.65        14.9 3.68           NA
4 Otu0001       CB 03JUN09   21   1.5 5.26        12.2 3.25           NA
5 Otu0001       CB 03JUN09   21   2.0 4.01        10.1 3.25           NA

我正在使用以下方法计算范围:

ranges <- join %>% 
  group_by(location) %>%
  na.omit %>%
  mutate(min=min(Temperature), max=max(Temperature), subtract=min-max) %>%
  arrange(subtract)

一些温度值是“NA”,所以我使用了 na.omit,但它似乎正在取出负值?所以我得到的范围是错误的。

location min max subtract
   MA      0.1  27.3    -27.2

我使用 range 函数对其中一个位置进行了仔细检查(有很多,我不想为每个位置使用 range)

    MA <- subset(join, location=="MA")
range(MA$Temperature, na.rm = TRUE)
[1] -2.2 27.6

为什么价值观不同?任何帮助表示赞赏!

标签: r

解决方案


我认为您应该使用join %>% filter(!is.na(Temperature)),因此只会删除具有 NA 温度的行。


推荐阅读