2015-12-04 2 views
-1

У меня очень большой фрейм данных с многочисленными переменными, которые полностью пусты (NA). Моя цель - удалить эти переменные. Я хочу исключить пустые переменные, а не пропущенные значения. Это похоже на очень простой вопрос, но я не могу понять.Определить список (или удалить) переменных в полном объеме данных (NA)

#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 :: описать(), но я не могу понять, как извлечь или использовать этот список.

+0

Downvote объяснение. Наверняка об этом просили раньше. –

+0

Можно было бы так думать, но не так, чтобы я мог найти. – micturalgia

+0

Я не думал, что было бы трудно использовать пример здесь, даже если он ссылался на строку, а не на столбцы: http://stackoverflow.com/questions/25599139/identifying-rows-in-data-frame-with -одно-na-values-in-r Я получил 36 хитов для поиска на '[r] идентифицировать столбцы все NA' –

ответ

2

Попробуйте это:

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

или, быть очень безопасным:

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

блестящие! Это работает. Я приму это как ответ, как только пройдет 12-минутный период охлаждения. :) – micturalgia

1

Try:

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

Все переменные только с NA будет иметь сумму 0

Смежные вопросы