Comment supprimer les NA (valeurs manquantes) dans R avec dplyr ?

Vous savez comment filtrer un jeu de données avec dplyr ? : filter(), on peut donc utiliser une règle pour filtrer sur les valeurs manquantes (les fameux NA) en utilisant la fonction is.na.


library(dplyr)

df <- tibble(x1 = c(1, 2, NA, 4),
x2 = c("a", NA, "b", "c"),
y = c(NA, TRUE, FALSE, TRUE))

df %>% filter(!is.na(x1))

Mais si vous voulez supprimer les lignes qui contiennent des NA dans plusieurs colonnes, voire toutes les colonnes, il vaut mieux utiliser drop_na du package {tidyr}. Vous pourrez même utiliser les « helpers » comme pour la fonction select de {dplyr} pour choisir les colonnes avec des règles.


library(tidyr)

df <- tibble(x1 = c(1, 2, NA, 4),
x2 = c("a", NA, "b", "c"),
y = c(NA, TRUE, FALSE, TRUE))

df %>% drop_na()
df %>% drop_na(x1)
df %>% drop_na(starts_with("x"))