使用两列数据拆分数据框,并对结果数据框列表应用常见转换

时间:2012-01-20 14:12:41

标签: r split dataframe

我想根据两列中的值将大型数据帧拆分为数据帧列表。然后,我想在结果列表中对所有数据帧(滞后变换)应用公共数据转换。我知道split命令,但一次只能处理一列数据。

2 个答案:

答案 0 :(得分:51)

您需要将所有要分割的因子放在列表中,例如:

split(mtcars,list(mtcars$cyl,mtcars$gear))

然后你可以使用lapply来做你想做的其他事情。

如果要避免在结果中使用零行数据帧,则会有一个drop参数,其默认值与“[”函数中的drop参数相反。

split(mtcars,list(mtcars$cyl,mtcars$gear), drop=TRUE)

答案 1 :(得分:7)

这个怎么样:

 library(plyr)
 ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2))

似乎是plyr包和ddply()函数的优秀工作。如果仍有未解决的问题,请提供一些示例数据。拆分也应该适用于几个列:

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)