Я испытываю затруднения из-за кадра данных и не мог действительно решить тот вопрос сам:
Кадр данных имеет произвольные свойства как столбцы, и каждая строка представляет один набор данных.
Вопрос:
Как избавиться от столбцов, где для ВСЕХ строк значение является NA?
Попробуйте следующее:
df <- df[,colSums(is.na(df))<nrow(df)]
Другой способ - использовать функцию apply ()
.
Если у вас есть data.frame
df <- data.frame (var1 = c(1:7,NA),
var2 = c(1,2,1,3,4,NA,NA,9),
var3 = c(NA)
)
, вы можете использовать apply ()
, чтобы увидеть, какие столбцы соответствуют вашему условию, и вы можете просто выполнить то же подмножество, что и в ответе Мусы, только с подходом применить
.
> !apply (is.na(df), 2, all)
var1 var2 var3
TRUE TRUE FALSE
> df[, !apply(is.na(df), 2, all)]
var1 var2
1 1 1
2 2 2
3 3 1
4 4 3
5 5 4
6 6 NA
7 7 NA
8 NA 9