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.

Essayez df[df$ID %en% garder, ] ou de sous-ensemble(df, ID %en% garder) - voir la section stat.ethz.ch/R-manual/R-devel/library/base/html/sets.html
réponse ...

OriginalL'auteur user2849910 | 2013-10-05