R数据:删除NA的行不会删除行

时间:2017-06-22 21:29:17

标签: r

我正在尝试删除第1列中NA的行(下面示例中的第4行),但是不删除行,而是将整个行4替换为NA:

dat <- data.frame(x1 = c(1,2,3, NA, 5), x2 = c(100, NA, 300, 400, 500))
> dat
#  x1  x2
#  1  1 100
#  2  2  NA
#  3  3 300
#  4 NA 400
#  5  5 500

 ad<- dat[dat$x1!=1,]
 > ad
#     x1  x2
#  2   2  NA
#  3   3 300
#  NA NA  NA
#  5   5 500

3 个答案:

答案 0 :(得分:1)

您的代码无法正常工作,因为您正在尝试检查第一列中的值是否为NA。对于NA行,它不起作用,因为它的NA和R不能与任何东西进行比较。

你应该这样做:

ad <- dat[!is.na(dat$x1),]

  x1  x2
1  1 100
2  2  NA
3  3 300
5  5 500

答案 1 :(得分:0)

尝试complete.cases

ad <- dat[complete.cases(dat$x1), ]

只保留dat $ x1不包含NA的行

答案 2 :(得分:0)

基础R 中,您可以使用is.na并获得所需内容:

dat[!is.na(dat$x1),]
#   x1  x2
# 1  1 100
# 2  2  NA
# 3  3 300
# 5  5 500