【问题标题】:Split dataframe using two columns of data and apply common transformation on list of resulting dataframes使用两列数据拆分数据框,并对结果数据框列表应用通用转换
【发布时间】:2012-02-15 02:13:45
【问题描述】:

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

【问题讨论】:

    标签: r split dataframe


    【解决方案1】:

    您需要将所有要拆分的因素放在一个列表中,例如:

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

    那么你可以在这个上面使用lapply来做你想做的其他事情。

    如果您想避免结果中出现零行数据帧,则有一个 drop 参数,其默认值与“[”函数中的 drop 参数相反。

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

    【讨论】:

      【解决方案2】:

      这个怎么样:

       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)
      

      【讨论】:

      • 感谢您的回答!发现我需要将拆分变量放在一个列表中,并且使用两个变量来解决“拆分”问题。阅读 plyr 包,它确实很强大。但是不能让它做我想做的事。试过这个命令:llply(1:length(List),function(i){temp
      猜你喜欢
      • 1970-01-01
      • 2013-04-02
      • 2020-10-27
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多