按 R 中的特定列对聚合输出进行排序

Sorting an aggregate output by a specific column in R

我正在尝试对传递给多个函数的聚合函数的输出进行排序,因为我想显示每个配对的均值和计数。

我调用如下(以内置数据集 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),]

我知道 class(LobHeigh$x) 显示 x 是一个矩阵,但是我不知道如何访问 x.mn 以使用它进行排序。

有办法吗?

您可以通过双索引访问该列,LobHeigh[,3][,1]

LobHeigh[sort(LobHeigh[,3][,1], TRUE),]

也就是说,您最好将其设为更传统的矩阵。

cbind(LobHeigh[,1:2], LobHeigh[,3])

并从那里开始使用它。