web-dev-qa-db-fra.com

Comment sous-définir un bloc de données en prenant uniquement les valeurs Non NA de 2 colonnes dans ce bloc de données

J'essaie de sous-définir un bloc de données en prenant les valeurs entières de 2 colonnes dans mon bloc de données

Subs1<-subset(DATA,DATA[,2][!is.na(DATA[,2])] & DATA[,3][!is.na(DATA[,3])])

mais cela me donne une erreur: une longueur d'objet plus longue n'est pas un multiple d'une longueur d'objet plus courte.

Comment puis-je construire un sous-ensemble composé de valeurs NON NA de la colonne 2 ET de la colonne 3?

Merci beaucoup?

12
EnginO

Essaye ça:

Subs1<-subset(DATA, (!is.na(DATA[,2])) & (!is.na(DATA[,3])))

Le deuxième paramètre de subset est un vecteur logique avec la même longueur de nrow(DATA), indiquant s'il faut conserver la ligne correspondante.

19
cogitovita

Les fonctions na.omit peuvent être une réponse à votre question

 Subs1 <- na.omit(DATA[2:3])

[ https://stat.ethz.ch/R-manual/R-patched/library/stats/html/na.fail.html]

5
Berecht

Voici un exemple. a, b, c sont 3 vecteurs dont a et b ont une valeur manquante. une fois qu'ils sont créés, j'utilise cbind afin de les lier dans une matrice que vous pouvez ensuite transformer en trame de données.

Le résultat final est une trame de données où 2 des 3 colonnes ont une valeur manquante. Nous devons donc garder uniquement les lignes avec des cas complets .DATA[complete.cases(DATA), ] est utilisé afin de ne garder que ces lignes qui n'ont pas de valeurs manquantes dans chaque colonne. subset objet est ces lignes qui ont des cas complets.

  a <- c(1,NA,2)
  b <- c(NA,1,2)
  c <- c(1,2,3)
  DATA <- as.data.frame(cbind(a,b,c))
  subset <-  DATA[complete.cases(DATA), ] 
3
krishnamurti