2
我使用tapply
按的因子生成摘要。例如,将数据帧摘要保存为数据帧
s <- with(mtcars, tapply(mpg, cyl, summary))
我看到s的类是一个数组。有没有简单的方法将tapply
输出转换为另一个data.frame
?
我使用tapply
按的因子生成摘要。例如,将数据帧摘要保存为数据帧
s <- with(mtcars, tapply(mpg, cyl, summary))
我看到s的类是一个数组。有没有简单的方法将tapply
输出转换为另一个data.frame
?
典型的方法是使用do.call(rbind, ...)
,像这样:
do.call(rbind, s)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 4 21.4 22.80 26.0 26.66 30.40 33.9
# 6 17.8 18.65 19.7 19.74 21.00 21.4
# 8 10.4 14.40 15.2 15.10 16.25 19.2
正如意见中提到的@akrun早些时候,它包裹在as.data.frame
会得到你data.frame
。
如果你是开放的替代品,你也可以尝试“data.table”,用它你可以这样做:
library(data.table)
as.data.table(mtcars)[, as.list(summary(mpg)), by = cyl]
# cyl Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1: 6 17.8 18.65 19.7 19.74 21.00 21.4
# 2: 4 21.4 22.80 26.0 26.66 30.40 33.9
# 3: 8 10.4 14.40 15.2 15.10 16.25 19.2
'骨料()'可能是一个更好的选择,功能比'tapply ()'给出你想要的输出。 – MrFlick 2014-09-29 19:12:43
@MrFlick,来自'aggregate'的聚合列将是一个'matrix'。它需要一个(有点笨拙的)'do.call(data.frame,aggregate(...))'类型的方法。 – A5C1D2H2I1M1N2O1R2T1 2014-09-29 19:18:16
感谢您的测试@AnandaMahto。我在移动设备上,我不能。 – MrFlick 2014-09-29 19:19:37