如何选择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
答案 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
,使用lapply
或sapply
和函数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值的数量进行子集化。