将列表从tapply(。)转换为R中的data.frame

时间:2014-04-22 11:11:07

标签: r dataframe tapply

我有以下代码

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?

中完成

2 个答案:

答案 0 :(得分:5)

尝试

do.call(rbind, t)

rbind

列表中的所有数据框t

顺便说一下。特别是对于你正在做的事情,你也可以通过简单地使用

来实现它
t(sapply(z[, c(1,3)], summary))

答案 1 :(得分: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将列表返回值视为包含列。