Plusieurs façon de faire, à vous de choisir celle qui vous plait le plus
Fabriquons un petit jeu de données auquel nous souhaitons ajouter une colonne contenant le nombre ne NA
sur chacune des lignes.
library(tidyverse)
dataset <- tribble(~a,~b,~c,
1,NA,NA,
NA,NA,NA,
1,2,3,
NA,3,NA
)
A l’ancienne
dataset$nb <- apply(dataset, MARGIN = 1, function(x){sum(is.na(x))})
avec du pmap
et du mutate
dataset %>% mutate(nb = pmap(.,function(a,b,c){sum(is.na(a),is.na(b),is.na(c))}),
nb= unlist(nb))
Mais c’est dommage de devoir spécifier a, b et c.
donc simplifions :
dataset %>%
mutate(nb = pmap_dbl(., function(...){sum(is.na(c(...)))}))
Cela reste à mon goût un peu trop verbeux
Avec rowSums
dataset %>% mutate(nb = rowSums(is.na(.)))
ça c’est propre et efficace
En utilisant le package {naniar} (coucou @colin ) (qui habille rowSums
)
dataset %>% naniar::add_n_miss()
En espérant que cela vous soit utile.