我想删除一些在特定列中包含缺失值的行.例如,
[,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)
怎么处理?提前致谢.
首先,我重新创建您的数据并将它们存储为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)