2

我有以下代码

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 中完成?

4

2 回答 2

5

尝试

do.call(rbind, t)

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

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

t(sapply(z[, c(1,3)], summary))
于 2014-04-22T11:16:51.010 回答
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将列表返回值视为包含列。

于 2014-04-22T12:31:37.273 回答