【发布时间】:2012-02-15 02:13:45
【问题描述】:
我想根据两列中的值将一个大数据框拆分为一个数据框列表。然后,我想对结果列表中的所有数据帧(滞后转换)应用通用数据转换。我知道 split 命令,但一次只能处理一列数据。
【问题讨论】:
我想根据两列中的值将一个大数据框拆分为一个数据框列表。然后,我想对结果列表中的所有数据帧(滞后转换)应用通用数据转换。我知道 split 命令,但一次只能处理一列数据。
【问题讨论】:
您需要将所有要拆分的因素放在一个列表中,例如:
split(mtcars,list(mtcars$cyl,mtcars$gear))
那么你可以在这个上面使用lapply来做你想做的其他事情。
如果您想避免结果中出现零行数据帧,则有一个 drop 参数,其默认值与“[”函数中的 drop 参数相反。
split(mtcars,list(mtcars$cyl,mtcars$gear), drop=TRUE)
【讨论】:
这个怎么样:
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)
【讨论】: