168 votes

Omettre les lignes contenant une colonne spécifique de NA

Je voudrais savoir comment omettre NA dans un cadre de données, mais seulement dans certaines colonnes qui m'intéressent.

Par exemple,

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

mais je ne veux omettre que les données où y es NA Le résultat devrait donc être

  x  y  z
1 1  0 NA
2 2 10 33

na.omit semble supprimer toutes les lignes contenant des NA .

Quelqu'un peut-il m'aider à répondre à cette simple question ?

Mais si maintenant je modifie la question comme suit :

DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))

Si je veux omettre seulement x=na o z=na où puis-je mettre le | en fonction ?

7voto

M. Viking Points 719

Omettre la ligne si l'une des deux colonnes spécifiques contient <NA> .

DF[!is.na(DF$x)&!is.na(DF$z),]

3voto

rockswap Points 311

Essayez ceci :

cc=is.na(DF$y)
m=which(cc==c("TRUE"))
DF=DF[-m,]

2voto

Luchao Qi Points 71

Essayez donc ceci :

DF %>% t %>% na.omit %>% t

Il transpose le cadre de données et omet les lignes nulles qui étaient des "colonnes" avant la transposition, puis vous le transposez à nouveau.

2voto

Vinícius Félix Points 144

Pour la mise à jour, un tidyverse approche avec dplyr :

library(dplyr)

your_data_frame %>% 
  filter(!is.na(region_column))

0voto

Quinten Points 454

Il n'est pas nécessaire de créer une fonction personnalisée avec la fonction complete.cases pour supprimer les lignes contenant NA dans une certaine colonne. Voici un exemple reproductible :

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
DF
#>   x  y  z
#> 1 1  0 NA
#> 2 2 10 33
#> 3 3 NA 22
DF[complete.cases(DF$y),]
#>   x  y  z
#> 1 1  0 NA
#> 2 2 10 33

Créé le 2022-08-27 avec reprex v2.0.2

Comme vous pouvez le voir, il a supprimé la ligne contenant NA dans certaines colonnes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X