J'essaie de sous-définir mes données pour supprimer des lignes avec certaines valeurs de certaines variables. Supposons que j'ai une trame de données df avec beaucoup de colonnes et de lignes, je veux supprimer des lignes basées sur les valeurs des variables G1 et G9, et je veux seulement garder des lignes où ces variables prennent des valeurs de 1, 2 ou 3. De cette façon, je vise à sous-ensemble sur les mêmes valeurs à travers plusieurs variables. J'essaye de faire ceci avec quelques lignes de code et d'une manière qui permette des changements rapides aux variables ou aux valeurs que je voudrais employer. Par exemple, en supposant que je commence par trame de données df et que vous souhaitez mettre fin à newdf, ce qui exclut les observations où G1 et G9 ne prennent pas sur des valeurs de 1, 2 ou 3:Sous-maillage efficace sur plusieurs colonnes et lignes
# Naive approach (requires manually changing variables and values in each line of code)
newdf <- df[which(df$G1 %in% c(1,2,3), ]
newdf <- df[which(newdf$G9 %in% c(1,2,3), ]
# Better approach (requires manually changing variables names in each line of code)
vals <- c(1,2,3)
newdf <- df[which(df$G1 %in% vals, ]
newdf <- df[which(newdf$G9 %in% vals, ]
Si je voulais non seulement sous-ensemble sur G1 et G9 mais de nombreuses variables, cette approche manuelle prendrait du temps à modifier. Je veux simplifier encore plus en consolidant tout le code dans une seule ligne. Je sais que ce qui suit est faux mais je ne suis pas sûr de savoir comment mettre en place une alternative.
newdf <- c(1,2,3)
newdf <- c(df$G1, df$G9)
newdf <- df[which(df$vars %in% vals, ]
Je crois comprendre que je veux utiliser apply()
mais je ne sais pas comment.
Veuillez fournir un jeu de données sur lequel travailler. Un MWE (exemple de travail minimum) nous permet de fournir des réponses concises. –