Вы можете использовать следующие методы из пакета 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: как использовать фильтр «не в»