Как удалить строки со значениями NA с помощью dplyr


Вы можете использовать следующие методы из пакета dplyr для удаления строк со значениями NA:

Метод 1: удалить строки со значениями NA в любом столбце

library(dplyr)

#remove rows with NA value in any column
df %>%
 na. omit ()

Метод 2: удалить строки со значениями NA в определенных столбцах

library(dplyr)

#remove rows with NA value in 'col1' or 'col2'
df %>%
 filter_at(vars(col1, col2), all_vars( ! is. na (.)))

Способ 3: удалить строки со значениями NA в одном конкретном столбце

library(dplyr)

#remove rows with NA value in 'col1'
df %>%
 filter( ! is. na (col1))

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

#create data frame with some missing values
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C'),
 points=c(99, 90, 86, 88, NA),
 assists=c(33, NA, 31, 39, 34),
 rebounds=c(NA, 28, 24, 24, 28))

#view data frame
df

 team points assists rebounds
1 A 99 33 NA
2 A 90 NA 28
3 B 86 31 24
4 B 88 39 24
5 C NA 34 28

Метод 1: удалить строки со значениями NA в любом столбце

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

library(dplyr)

#remove rows with NA value in any column
df %>%
 na. omit ()

 team points assists rebounds
3 B 86 31 24
4 B 88 39 24

Остались только две строки без каких-либо значений NA ни в одном столбце.

Метод 2: удалить строки со значениями NA в определенных столбцах

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

library(dplyr)

#remove rows with NA value in 'points' or 'assists' columns
df %>%
 filter_at(vars(points, assists), all_vars( ! is. na (.)))

 team points assists rebounds
1 A 99 33 NA
2 B 86 31 24
3 B 88 39 24

Остались только строки без каких-либо значений NA в столбцах «баллы» или «ассисты».

Способ 3: удалить строки со значениями NA в одном конкретном столбце

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

library(dplyr)

#remove rows with NA value in 'points' column
df %>%
 filter( ! is. na (points))

 team points assists rebounds
1 A 99 33 NA
2 A 90 NA 28
3 B 86 31 24
4 B 88 39 24

Остались только строки без каких-либо значений NA в столбце «баллы».

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

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

dplyr: как фильтровать строки, содержащие определенную строку
dplyr: как заменить значения NA на ноль
dplyr: как использовать фильтр «не в»

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