R 如果超出特定范围,则将值更改为0
我希望任何超出我期望范围的ET值为0(或NA),我认为应该是这么简单:R 如果超出特定范围,则将值更改为0,r,R,我希望任何超出我期望范围的ET值为0(或NA),我认为应该是这么简单: df[df$ET < 0 & df$ET > 10,]<- 0 以下方面应起作用: df$ET[df$ET < 0 | df$ET > 10] <- 0 我认为这可能是您拥有的NAs,因为以下内容对我拥有的一些测试数据起到了作用: df[df$ET < 0 & df$ET > 10]<- 0 df[df$ET10]在我尝试这两种方法时显示相同的错误消
df[df$ET < 0 & df$ET > 10,]<- 0
以下方面应起作用:
df$ET[df$ET < 0 | df$ET > 10] <- 0
我认为这可能是您拥有的NAs,因为以下内容对我拥有的一些测试数据起到了作用:
df[df$ET < 0 & df$ET > 10]<- 0
df[df$ET<0&df$ET>10]在我尝试这两种方法时显示相同的错误消息。也许我的数据帧有问题?有很多NAs,我想这就是“不允许缺少值”的意思。有什么办法可以解决这个问题吗?现在我想起来了,请告诉我,str(df)
df$ET<0
,同时df$ET>10
???如果可能的话,我们应该立即解雇所有的数学教授。@Nazer,我认为你的data.frame
没有任何问题。请确保您只是选择了相关的列,并且您的[
和]
之间没有任何逗号。当我尝试您建议的“以下内容”时,我得到的是TRUE和FALSE,对于最后一行,同样的错误。@Nazer,请将您所做的完全粘贴到最后一行。我确实忘记了其中的一部分!第一次df后的$ET
。它已经解决了,我们有一个非常好的过滤示例!谢谢你,阿南达。
df$ET[df$ET < 0 | df$ET > 10] <- 0
## Sample data
set.seed(1)
df <- data.frame(ET = c(-5, 1, -6, 2, NA,
10, 11, NA, 3, 4),
V1 = 0)
df
# ET V1
# 1 -5 0
# 2 1 0
# 3 -6 0
# 4 2 0
# 5 NA 0
# 6 10 0
# 7 11 0
# 8 NA 0
# 9 3 0
# 10 4 0
df$ET < 0
df$ET > 10
df$ET < 0 & df$ET > 10
df$ET < 0 | df$ET > 10
df$ET[df$ET < 0 | df$ET > 10] <- 0
df
# ET V1
# 1 0 0
# 2 1 0
# 3 0 0
# 4 2 0
# 5 NA 0
# 6 10 0
# 7 0 0
# 8 NA 0
# 9 3 0
# 10 4 0
df[df$ET < 0 & df$ET > 10]<- 0