删除R中特定列中包含缺失值的行

use*_*330 5 r

我想删除一些在特定列中包含缺失值的行.例如,

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2   NA    3    3   NA    3
[2,]   NA   NA   NA   NA   NA    1
[3,]   NA    2   NA   NA    1    1
[4,]    2    3    1    3    2    1
[5,]   NA   NA   NA   NA   NA    2
[6,]    1    1    3    1    2    3
Run Code Online (Sandbox Code Playgroud)

现在我想删除包含从第1列到第5列的所有缺失值的一些行.在这种情况下,我应该删除第2行和第5行.因此,数据框变为

   [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2   NA    3    3   NA    3
[2,]   NA    2   NA   NA    1    1
[3,]    2    3    1    3    2    1
[4,]    1    1    3    1    2    3
Run Code Online (Sandbox Code Playgroud)

怎么处理?提前致谢.

Zby*_*nek 2

首先,我重新创建您的数据并将它们存储为M

M <- matrix(c(2, NA,3,3,NA,3,NA,NA,NA,NA,NA,1,NA,2,NA,NA,1,1,2,3,1,3,2,1,NA,NA,NA,NA,NA,2,1,1,3,1,2,3), ncol=6, byrow=T)
Run Code Online (Sandbox Code Playgroud)

现在下一点可能有点难以理解:

首先,我找出哪些行满足条件,即NA第 1 到第 5 列中有值。

apply(M[,1:5],1,function(x) {all(is.na(x))} )
[1] FALSE  TRUE FALSE FALSE  TRUE FALSE
Run Code Online (Sandbox Code Playgroud)

然后我选择其他行(我放在!上面一行的前面)

M[!apply(M[,1:5],1,function(x) {all(is.na(x))} ),]
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2   NA    3    3   NA    3
[2,]   NA    2   NA   NA    1    1
[3,]    2    3    1    3    2    1
[4,]    1    1    3    1    2    3
Run Code Online (Sandbox Code Playgroud)