[英]Issue with NA values when removing rows from data frame in R
这是我的数据框:
ID <- c('TZ1','TZ2','TZ3','TZ4')
hr <- c(56,32,38,NA)
cr <- c(1,4,5,2)
data <- data.frame(ID,hr,cr)
ID hr cr
1 TZ1 56 1
2 TZ2 32 4
3 TZ3 38 5
4 TZ4 NA 2
我想删除data $ hr = 56的行。这就是我想要的最终产品是:
ID hr cr
2 TZ2 32 4
3 TZ3 38 5
4 TZ4 NA 2
我认为这是可行的:
data = data[data$hr !=56,]
但是,结果数据帧如下所示:
ID hr cr
2 TZ2 32 4
3 TZ3 38 5
NA <NA> NA NA
如何修改代码以包含NA值,这样就不会发生? 谢谢您的帮助,我无法解决。
编辑:我也想将NA值保留在数据框中。
问题是,当我们执行==
或!=
,如果存在NA值,它将保持不变并为该对应的NA值创建NA行。 因此,使逻辑索引仅包含TRUE / FALSE值的一种方法是在比较中也使用is.na
data[!(data$hr==56 & !is.na(data$hr)),]
# ID hr cr
#2 TZ2 32 4
#3 TZ3 38 5
#4 TZ4 NA 2
我们也可以应用反向逻辑
subset(data, hr!=56|is.na(hr))
# ID hr cr
#2 TZ2 32 4
#3 TZ3 38 5
#4 TZ4 NA 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.