如果任何列包含 NA,则删除行

Remove row if any column contains NA

我有一个大数据框。如果 任何列 包含 NA.

,我想删除观察结果

例如,

     A   B    C
1    23  NA   2
2    NA  12   10
3    6   27   18
4    18  22   NA

剩下的唯一观察值应该是上述数据框中的第三个观察值。

如果 任何列 包含 NA,我如何删除观察?

你是这个意思吗?

test <- data.frame(A = c(23, NA, 6, 18), 
           B = c(NA, 12, 27, 22), 
           C = c(2, 10, 18, NA))

na.omit(test)

 A  B  C
3 6 27 18

我们可以使用complete.cases

subset(test, complete.cases(test))

有点冗长的方式...

#Your df
x=matrix(c(23 ,NA,2,NA,12,10,6,27,18,18,22,NA),4,3,byrow = T)
x1=as.data.frame(x)

#actual solution
x2=rep(0,nrow(x1))
for (i in 1:nrow(x1)) x2[i]=!any(is.na(x1[i,]))
x1=x1[which(x2!=0),]