我想使用几列来拆分数据框,并在每个组上调用fivenum
。
aggregate(Petal.Width ~ Species, iris, function(x) summary(fivenum(x)))
返回的值是只有两列的data.frame,第二列是矩阵。如何将其转换为data.frame的普通列?
更新
我希望使用
fivenum
使用更少的代码进行以下操作ddply(iris, .(Species), summarise,
Min = min(Petal.Width),
Q1 = quantile(Petal.Width, .25),
Med = median(Petal.Width),
Q3 = quantile(Petal.Width, .75),
Max = max(Petal.Width)
)
最佳答案
您可以使用do.call
递归地在每个矩阵元素上调用data.frame
以获得带有矢量元素的data.frame:
dim(do.call("data.frame",dfr))
[1] 3 7
str(do.call("data.frame",dfr))
'data.frame': 3 obs. of 7 variables:
$ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 2 3
$ Petal.Width.Min. : num 0.1 1 1.4
$ Petal.Width.1st.Qu.: num 0.2 1.2 1.8
$ Petal.Width.Median : num 0.2 1.3 2
$ Petal.Width.Mean : num 0.28 1.36 2
$ Petal.Width.3rd.Qu.: num 0.3 1.5 2.3
$ Petal.Width.Max. : num 0.6 1.8 2.5
关于r - 如何使用带有ddply或聚合返回向量(如Fivenum)的函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14758566/