选择不包含R中任何NA值的列

时间:2014-06-13 04:40:27

标签: r

如何选择R中不包含任何NA值的列?只要列包含至少一个NA,我就想要排除它。最好的方法是什么?我正在尝试使用sum(is.na(x))来实现这一目标,但尚未成功。

另外,另一个R问题。是否可以使用命令排除包含所有相同值的列?例如,

  column1  column2
row1   a        b  
row2   a        c
row3   a        c

我的目的是从我的矩阵中排除column1,因此最终结果是:

   column2
row1   b  
row2   c
row3   c

3 个答案:

答案 0 :(得分:3)

Remove columns from dataframe where ALL values are NA处理所有值均为NA

的情况

对于矩阵,您可以使用colSums(is.na(x)找出哪些列包含NA

给出矩阵x

x[, !colSums(is.na(x)), drop = FALSE]

将适当地进行分组。

对于data.frame,使用lapplysapply和函数anyNA

会更有效率
xdf[, sapply(xdf, Negate(anyNA)), drop = FALSE]

答案 1 :(得分:0)

如果'mat1'是矩阵:

indx <- unique(which(is.na(mat1), arr.ind=TRUE)[,2])
subset(mat1, select=-indx)

答案 2 :(得分:0)

另外,可以做到

new.df <- df[, colSums(is.na(df)) == 0 ]

这种方式允许您根据列中NA值的数量进行子集化。