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

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)


Seb*_*Seb 7

这个怎么样:

 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)