【问题标题】:How to join lists of dataframe that were split using plyr function如何加入使用 plyr 函数拆分的数据框列表
【发布时间】:2015-07-07 01:29:38
【问题描述】:

我使用了 plyr 包提供的 strip_splits(df) 函数来获取数据帧列表。我现在想将数据框列表连接在一起,并添加回用于拆分它们的变量。下面突出显示的文档使我相信这应该是可能的,但是我找不到合适的功能。

当您想要对数据框中的每一列执行一些操作时,这很有用,除了您用于拆分的变量。将所有结果组合在一起时,这些变量将自动添加回结果中。

例子:

dfSplit <- dlply(mtcars, c("vs", "am"), strip_splits)
df <- dfSplit[[1]]
score <- function(df) {
  df$score <- apply(apply(df, 2, scale), 1, mean, na.rm = TRUE)
  return(df)
}
dfSplit <- lapply(dfSplit, score) 

如何将列表dfSplit中的数据框重新组合在一起?

编辑:合并的数据框应该有列 vsam

【问题讨论】:

    标签: r plyr


    【解决方案1】:

    使用来自dplyrbind_rows()

    library(dplyr)
    bind_rows(dfSplit)
    

    或者使用基础 R:

    do.call(rbind, dfSplit)
    

    这给出了:

    #Source: local data frame [32 x 10]
    #
    #    mpg cyl  disp  hp drat    wt  qsec gear carb       score
    #1  18.7   8 360.0 175 3.15 3.440 17.02    3    2 -0.18850120
    #2  14.3   8 360.0 245 3.21 3.570 15.84    3    4  0.05315376
    #3  16.4   8 275.8 180 3.07 4.070 17.40    3    3 -0.15909455
    #4  17.3   8 275.8 180 3.07 3.730 17.60    3    3 -0.14033030
    #5  15.2   8 275.8 180 3.07 3.780 18.00    3    3 -0.16788329
    #6  10.4   8 472.0 205 2.93 5.250 17.98    3    4  0.42384103
    #7  10.4   8 460.0 215 3.00 5.424 17.82    3    4  0.49006288
    #8  14.7   8 440.0 230 3.23 5.345 17.42    3    4  0.79264565
    #9  15.5   8 318.0 150 2.76 3.520 16.87    3    2 -0.79767163
    #10 15.2   8 304.0 150 3.15 3.435 17.30    3    2 -0.53819495
    #..  ... ...   ... ...  ...   ...   ...  ...  ...         ...
    

    【讨论】:

      【解决方案2】:

      您也可以使用来自data.table 包的rbindlist

      library(data.table)
      rbindlist(dfSplit)
      

      【讨论】:

        【解决方案3】:

        我后来找到了 plyr 函数 ldply,它给出了

        .id  mpg cyl  disp  hp drat    wt  qsec gear carb       score
        1  0.0 18.7   8 360.0 175 3.15 3.440 17.02    3    2 -0.18850120
        2  0.0 14.3   8 360.0 245 3.21 3.570 15.84    3    4  0.05315376
        3  0.0 16.4   8 275.8 180 3.07 4.070 17.40    3    3 -0.15909455
        4  0.0 17.3   8 275.8 180 3.07 3.730 17.60    3    3 -0.14033030
        5  0.0 15.2   8 275.8 180 3.07 3.780 18.00    3    3 -0.16788329
        

        但是文档让我相信应该有一个函数可以为数据框提供列 vs 和 am(而不是 .id)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-07
          • 1970-01-01
          • 1970-01-01
          • 2019-01-11
          • 2023-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多