use*_*760 33 split r dataframe
我想根据两列中的值将大型数据帧拆分为数据帧列表.然后,我想在结果列表中对所有数据帧(滞后变换)应用公共数据转换.我知道split命令但只能让它一次处理一列数据.
Jam*_*mes 54
您需要将要分割的所有因子放在列表中,例如:
split(mtcars,list(mtcars$cyl,mtcars$gear))
Run Code Online (Sandbox Code Playgroud)
然后你可以用lapply它来做你想做的其他事情.
如果要避免在结果中使用零行数据帧,则有一个drop参数的默认值与"["函数中的drop参数相反.
split(mtcars,list(mtcars$cyl,mtcars$gear), drop=TRUE)
Run Code Online (Sandbox Code Playgroud)
这个怎么样:
library(plyr)
ddply(df, .(category1, category2), summarize, value1 = lag(value1), value2=lag(value2))
Run Code Online (Sandbox Code Playgroud)
对于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)
Run Code Online (Sandbox Code Playgroud)