Split dataframe à l'aide de deux colonnes de données et d'appliquer la transformation commune sur la liste de dataframes
je veux diviser un grand dataframe dans une liste de dataframes selon les valeurs de deux colonnes. Je veux alors appliquer une transformation de données commune sur toutes les dataframes (transformation de lag) dans la liste résultante. Je suis conscient de la commande diviser, mais ne peut le faire fonctionner sur une seule colonne de données à la fois.
2 réponses
vous devez mettre tous les facteurs que vous voulez partager dans une liste, par exemple:
split(mtcars,list(mtcars$cyl,mtcars$gear))
alors vous pouvez utiliser lapply
ici pour faire ce que vous voulez faire.
comment à ce sujet:
library(plyr)
ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2))
semble être un excellent travail pour plyr
package ddply()
fonction. S'il y a encore des questions en suspens, veuillez fournir des exemples de données. Le fractionnement doit travailler sur plusieurs colonnes:
df<- data.frame(value=rnorm(100), class1=factor(rep(c('a','b'), each=50)), class2=factor(rep(c('1','2'), 50)))
g <- c(factor(df$class1), factor(df$class2))
split(df$value, g)