【问题标题】:Convert a list from tapply(.) to data.frame in R将列表从tapply(。)转换为R中的data.frame
【发布时间】:2014-04-22 11:11:06
【问题描述】:

我有以下代码

t <- tapply(z[,3],z[,1],summary)
# > t
# $AUS
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# -0.92420 -0.57920  0.08132 -0.13320  0.35940  0.39650 
# 
# $NZ
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# -1.80700 -0.98980 -0.98310 -0.57470  0.02292  0.88330 

我想让它显示为

            Min.  1st Qu.   Median     Mean  3rd Qu.     Max.
Aus     -0.92420 -0.57920  0.08132 -0.13320  0.35940  0.39650
NZ      -1.80700 -0.98980 -0.98310 -0.57470  0.02292  0.88330 

如何在 R 中完成?

【问题讨论】:

    标签: r dataframe tapply


    【解决方案1】:

    试试

    do.call(rbind, t)
    

    它将rbind列表中的所有数据帧t

    顺便说一句。具体到你正在做的事情,你也可以通过简单地使用来实现它

    t(sapply(z[, c(1,3)], summary))
    

    【讨论】:

      【解决方案2】:

      您应该考虑使用data.table 进行此类分析。在这里,我创建了z 作为两列数据框,其中包含CountryGDP 列:

      library(data.table)
      data.table(z)[, as.list(summary(GDP)), by="Country"]
      

      生产

         Country     Min. 1st Qu. Median   Mean 3rd Qu.   Max.
      1:     AUS 0.005469  0.1822 0.4193 0.4182  0.6032 0.9437
      2:      NZ 0.034400  0.3248 0.4838 0.5269  0.7648 0.9968
      

      data.table 将列表返回值视为包含列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 2016-06-17
        • 2020-07-17
        • 1970-01-01
        • 2019-12-18
        • 2014-05-17
        • 2017-12-22
        相关资源
        最近更新 更多