如何在R中按组计算顺序统计量。我想根据一列对结果进行聚合,然后每组仅返回1行。该行应为该组的第n个元素,根据某种排序确定。最好只使用基本函数。
x <- data.frame(Group=c("A","A", "A", "C", "C"),
Name=c("v", "u", "w", "x", "y"),
Quantity=c(3,3,4,2,0))
> x
Group Name Quantity
1 A v 3
2 A u 3
3 A w 4
4 C x 2
5 C y 0
我想根据数量和名称排序来获取第N高的值。当N=2时,结果为
Group Name Quantity
1 A u 3
5 C y 0
For N=1
Group Name Quantity
3 A w 4
4 C x 2
我尝试了以下方法,但是收到了一个不太有用的错误信息。
aggregate.data.frame(x, list(x$Group), function(y){ max(y[,'Quantity'])})
Error in `[.default`(y, , "Quantity") (from #1) : incorrect number of dimensions"
x [ranks == 2,] $ Name
返回c('v','y')
而不是所需的c('u','y')
。 我最初也掉进了同样的陷阱。 - Matthew LundbergName
的最小值,这在示例中恰好是正确的,因为在排名1的情况下只有一个Name
值,但通常情况下不正确。 - Matthew Lundberg