我使用tapply
为data.frame
按因素生成摘要。例如,
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
关于r - 将数据框摘要保存为数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106718/