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?
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.
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]
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), ]