Как удалить столбцы со значениями NA в R


Вы можете использовать один из следующих двух методов для удаления столбцов из фрейма данных в R, которые содержат значения NA:

Метод 1: используйте базу R

df[ , colSums(is.na(df))== 0 ]

Способ 2: используйте dplyr

library(dplyr)

df %>% select_if(~ !any(is. na (.)))

Оба метода дают одинаковый результат.

В следующих примерах показано, как использовать каждый метод на практике со следующим фреймом данных:

#create data frame
df <- data.frame(team=c('A', 'B', 'C', 'D', 'E'),
 points=c(99, NA, NA, 88, 95),
 assists=c(33, 28, 31, 39, 34),
 rebounds=c(30, 28, 24, 24, NA))

#view data frame
df

 team points assists rebounds
1 A 99 33 30
2 B NA 28 28
3 C NA 31 24
4 D 88 39 24
5 E 95 34 NA

Пример 1. Удаление столбцов со значениями NA с использованием базы R

В следующем коде показано, как удалить столбцы со значениями NA с помощью функций из базы R:

#define new data frame
new_df <- df[ , colSums(is.na(df))== 0 ]

#view new data frame
new_df

 team assists
1 A 33
2 B 28
3 C 31
4 D 39
5 E 34

Обратите внимание, что два столбца со значениями NA (очки и подборы) были удалены из фрейма данных.

Пример 2. Удаление столбцов со значениями NA с помощью dplyr

В следующем коде показано, как удалить столбцы со значениями NA с помощью функций из пакета dplyr :

library(dplyr)

#define new data frame
new_df <- df %>% select_if(~ !any(is. na (.)))

#view new data frame
new_df

 team assists
1 A 33
2 B 28
3 C 31
4 D 39
5 E 34

И снова два столбца со значениями NA (очки и подборы) были удалены из фрейма данных.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Как добавить столбец во фрейм данных в R
Как переименовать столбцы фрейма данных в R
Как отсортировать фрейм данных по столбцу в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.