Sélection de lignes dans un data.frame
Bonjour,
Je rencontre des difficultés pour un code.
J'ai un data.frame avec 50 000 lignes environ et 3 colonnes. Il me faut conserver uniquement certaines lignes qui correspondent à un identifiant.
Pour cela j'ai une liste fixe que j'ai déterminé manuellement.
Code:
x <- c("51","18","82","44","15","313","4","497","513","6710")
J'ai donc décidé de filtrer les valeurs de mon data.frame :
Code:
df1 <- tab[tab$identifiant %in% x, ]
Lorsque je fais cela j'obtiens un data.frame avec uniquement 4 lignes (qui sont parmi celles que demande) il m'en manque donc 6. En fonction de ma liste de valeur le chiffre varie et je ne comprend pas pourquoi.
J'ai donc tenté une nouvelle solution :
Code:
df1_1 <- AH[ c("518","1338","4382","7744","11915","34013","48325","49704","59813","68870"),1:3]
Cette solution me donne bien le nombre de lignes qu'il me faut mais il n'y as aucune valeurs. J'ai des NA qui apparaissent partout.
Je ne sais pas comment régler mon problème, j'ai essayé de supprimer les NA mais avec is.na() :
Code:
df1 <- !is.na(AH[ c("518","1338","4382","7744","11915","34013","48325","49704","59813","68870"),1:3])
Mais cela ne fonctionne pas et me donne des valeurs TRUE FALSE. Or dans mon cas les valeurs sont importantes.
Ça fait deux jours que je cherche une solution et je ne trouve plus de solution.
Auriez-vous une solution à me proposer ?
Merci par avance :)
Sélection de lignes dans un data.frame
Merci beaucoup de votre aide
J'ai appliqué la fonction is.numeric et cela m'as indiqué FALSE.
J'ai donc fait la manipulation suivante pour mettre tout mon data.frame en numérique :
Code:
tab2 <- as.data.frame(lapply(tab,as.numeric))
Mais le problème est toujours présent.
Mon problème peut-il venir d'ailleurs ?
Bien cordialement,
Sélection de lignes dans un data.frame
Oui et non j'ai essayé des deux manières.
Pour commencer j'ai vraiment en colonne mon identifiant et mes autres paramètres avec des noms de lignes allant de 1 à n ( nom de ligne différent de mon identifiant)
Code:
df <- as.data.frame(lapply(tab,as.numeric))
En filtrant sur ma colonne identifiant étant donnée que je ne trouvais pas cela jolie j'ai mis les id en nom de lignes :
Code:
df1 <- data.frame(df,row.names = df[,3])
Maintenant votre méthode varie en fonction de ce que je décide :
Code:
1 2
| x <- c("518","1338","4382","7744","11915","34013","48325","49704","59813","68870")
df2 <- df1[ row.names(df1) %in% x, ] |
En faisant cela j'ai toujours 4 valeurs. Par contre si je fait avec mon data.frame sans le nom des lignes modifiés cela change :
Code:
1 2
| x <- c("518","1338","4382","7744","11915","34013","48325","49704","59813","68870")
df2 <- df[ row.names(df) %in% x, ] |
J'ai 8 lignes (toujours pas 10) cependant ce ne sont pas les lignes avec l'identifiant qu'il me faut (le nom des lignes correspond aux bon numéros d'identifiant mais ils ne sont pas identiques dans ce data.frame).
merci de votre aide