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