按 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])
并从那里开始使用它。
我正在尝试对传递给多个函数的聚合函数的输出进行排序,因为我想显示每个配对的均值和计数。
我调用如下(以内置数据集 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])
并从那里开始使用它。