识别数据框中完全为空(NAs)的变量列表(或删除)

时间:2015-12-04 18:28:46

标签: r subset na

我有一个非常大的数据框,其中有许多完全为空的变量(NAs)。我的目标是删除这些变量。我想排除空变量,而不是缺少值。这似乎是一个非常基本的问题,但我无法弄明白。

#sample data
A<-rbinom(100,1,1/2)
B<-rbinom(100,1,1/2)
C<-NA
D<-NA
df<-as.data.frame(cbind((1:100),A,B,C,D))
df<-as.data.frame(lapply(df, function(x) 
               "is.na<-"(x, sample(seq(x), floor(length(x) * runif(1, 0, .2))))))
Hmisc::describe(df)

我可以使用Hmisc :: describe()创建这些变量的列表,但我无法弄清楚如何提取或使用此列表。

2 个答案:

答案 0 :(得分:2)

试试这个:

df[,!sapply(df,function(x) all(is.na(x)))]

或者,为了更加安全:

df[,!sapply(df,function(x) all(is.na(x))),drop = FALSE]

答案 1 :(得分:1)

尝试:

apply(df,2,function(x) sum(!is.na(x)))

只有NA的所有变量都有0