2014-09-18 3 views
-1

Я использую эту команду для удаления столбцов, где все значения равны NA.удаление столбцов только с значениями NA

testing5 <- subset(testing4, 
        select = -c(kurtosis_picth_belt, skewness_roll_belt, 
        skewness_roll_belt.1, min_yaw_belt, amplitude_yaw_belt, 
        kurtosis_roll_arm, kurtosis_picth_arm, kurtosis_yaw_arm, 
        skewness_roll_arm, skewness_pitch_arm, kurtosis_picth_dumbbell, 
        skewness_roll_dumbbell, skewness_pitch_dumbbell, min_yaw_dumbbell, 
        kurtosis_roll_forearm, kurtosis_picth_forearm, skewness_roll_forearm, 
        skewness_pitch_forearm)) 

Есть ли более короткий (программный) метод?

Спасибо и наилучшие пожелания, Парты

ответ

3

Вы можете удалить столбцы, содержащие все NA значения, например, с

d <- data.frame(x = c(NA, 3, NA), y = rep(NA, 3)) 
# x y 
# 1 NA NA 
# 2 3 NA 
# 3 NA NA 

d[!sapply(d, function(x) all(is.na(x)))] 
# x 
# 1 NA 
# 2 3 
# 3 NA 

По вашим данным, это было бы

testing4[!sapply(testing4, function(x) all(is.na(x)))] 
+0

(+1) для безопасного решения :) –

2

Еще один способ (чуть больше Векторизованных) с использованием @Richards данных

d[!is.nan(colMeans(d, na.rm = TRUE))] 
# x 
# 1 NA 
# 2 3 
# 3 NA 
+2

На этой дороге возможно что-то вроде 'd [colSums (is.na (d))

+0

@alexis_laz, блестящее предложение, как обычно –