r - aggregate() 是否保证结果将按分组列排序?

标签 r aggregate

我注意到aggregate()似乎返回按分组列排序的结果。这是保证吗?这可以依赖于周围的逻辑吗?

几个例子:

set.seed(1); df <- data.frame(group=sample(letters[1:3],10,replace=T),value=1:10);
aggregate(value~group,df,sum);
##   group value
## 1     a    16
## 2     b    22
## 3     c    17

并且有两个组(请注意,第二组先排序,然后是第一组打破平局):

set.seed(1); df <- data.frame(group1=sample(letters[1:3],10,replace=T),group2=sample(letters[4:6],10,replace=T),value=1:10);
aggregate(value~group1+group2,df,sum);
##   group1 group2 value
## 1      a      d     1
## 2      b      d     2
## 3      b      e     9
## 4      c      e    10
## 5      a      f    15
## 6      b      f    11
## 7      c      f     7

注意:我问这个问题是因为我刚刚找到了 Aggregating while merging two dataframes in R 的答案。至少在撰写本文时的当前形式,它依赖于 aggregate() 返回按分组列排序的结果。

最佳答案

是的,只要您了解因子按整数键进行的自然排序即可。您可以在代码中看到这一点:

y <- as.data.frame(by, stringsAsFactors = FALSE)
...  # y becomes the "integerized" dataframe of index vectors
grp <- rank(do.call(paste, c(lapply(rev(y), ident), list(sep = "."))), 
        ties.method = "min")
y <- y[match(sort(unique(grp)), grp, 0L), , drop = FALSE]
...

关于r - aggregate() 是否保证结果将按分组列排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541130/

相关文章:

r - R 中每年的数据摘要

mongodb - 在 MongoDB 中仅添加另一个集合中的字段

javascript - 如果存在输入,则 MongoDB 匹配(聚合)

sql - 唯一标识符 (GUID) 上的聚合函数

r - 将函数应用于同一组中的所有对

从超过一定长度的数字中删除最后一位数字

R:如何在 R markdown 中居中输出

r - ggplot2:当 'size' 包含内部和外部 aes 语句时,为什么符号大小不同?

r - ggplot条文本中的希腊字母

r - 对数据集进行子集化和汇总,以准备堆叠面积图的可视化