Ne gardant que certaines lignes d'un bloc de données basé sur un ensemble de valeurs
J'ai un bloc de données avec une colonne d'ID et quelques colonnes de valeurs. J'aimerais ne garder que certaines lignes de la trame de données basée sur si oui ou non la valeur de l'ID de la ligne correspond à un autre ensemble de valeurs (par exemple, appelé "garder").
Pour des raisons de simplicité, voici un exemple:
df <- data.frame(ID = sample(rep(letters, each=3)), value = rnorm(n=26*3))
keep <- c("a", "d", "r", "x")
Comment puis-je créer un nouveau bloc de données composé de lignes qui n'ont que des Id qui correspondent à ceux de la garder? Je peux le faire pour une seule lettre en utilisant le which()
fonction, mais avec plusieurs lettres que je reçois des messages d'avertissement et incorrect retourne. Je sais que je pourrais exécuter une boucle à travers la trame de données et d'extrapoler de cette façon, mais je me demandais si il n'y a plus d'élégance et de manière efficace. Merci à l'avance.
réponse ...
OriginalL'auteur user2849910 | 2013-10-05
Vous devez vous connecter pour publier un commentaire.
Essayer
df[df$ID %in% keep, ]
ousubset(df, ID %in% keep)
- voir la page d'aide pour jeux.Edit: Aussi, si c'était pour une seule lettre, vous pouvez écrire par exemple
df[df$ID == "a", ]
au lieu d'utiliserwhich()
.which()
méthode tout au long de mon histoire avec R et il semble syntaxiquement plus joli pour moi (si cela a un sens....) j'ai donc bâton avec elle 🙂OriginalL'auteur Adrian