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.

27
demandé sur Arun 2012-01-20 18:12:40

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.

43
répondu James 2012-01-20 14:46:14

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)
6
répondu Seb 2012-01-20 14:50:09