我正在尝试对传递多个函数的聚合函数的输出进行排序,因为我想显示每个配对的均值和计数。
我调用如下(使用内置数据集Loblolly作为示例):
> LobHeigh <- aggregate(Loblolly$height, by=list(Loblolly$Seed,
Loblolly$age),FUN=function(x) c(mn=mean(x), n=length(x)))
> head(LobHeigh)
Group.1 Group.2 x.mn x.n
1 329 3 3.93 1.00
2 327 3 4.12 1.00
3 325 3 4.38 1.00
4 307 3 3.91 1.00
5 331 3 3.46 1.00
6 311 3 3.88 1.00
我希望这个输出看起来如下(无论哪种方式,小数位数都很好):
Group.1 Group.2 x.mn x.n
325 3 4.38 1
327 3 4.12 1
329 3 3.93 1
307 3 3.91 1
311 3 3.88 1
331 3 3.46 1
我试图按如下方式对聚合调用进行排序,但这并没有奏效:
LobHeigh <- aggregate(Loblolly$height, by=list(Loblolly$Seed,
Loblolly$age),FUN=function(x) c(mn=sort(mean(x)), n=length(x)))
我还尝试在函数调用之后对LobHeigh进行排序,如下所示,因为我知道如果我只是自己聚合平均值,这是有效的:
> LobHeigh <- aggregate(Loblolly$height, by=list(Loblolly$Seed,
Loblolly$age),FUN=function(x) c(mn=mean(x), n=length(x)))
> LobHeigh[order(LobHeigh$x),]
我知道类(LobHeigh $ x)显示x是一个矩阵,但我无法弄清楚如何访问x.mn以使用它进行排序。
有办法做到这一点吗?
答案 0 :(得分:2)
您可以通过双重索引LobHeigh[,3][,1]
来访问该列。
LobHeigh[sort(LobHeigh[,3][,1], TRUE),]
那就是说,你可能最好把它变成一个更传统的矩阵。
cbind(LobHeigh[,1:2], LobHeigh[,3])
并从那里开始使用它。