我正在使用data.table包来聚合一列,这也是一个分组列。但是结果不是我所期望的。

my_data =  data.table(contnt=c("america", "asia", "asia","europe", "europe", "europe"), num= 1:6)

#my_data
#contnt  num
#america  1
#asia     2
#asia     3
#europe   4
#europe   5
#europe   6

my_data[, length(contnt),by=contnt]
#contnt  V1
#america  1
#asia     1
#europe   1


当我聚合除分组列以外的列时,其工作方式有所不同

my_data[, length(num),by=contnt]
#contnt  V1
#america  1
#asia     2
#europe   3


是什么原因导致这种差异?

最佳答案

这是一个很好的示例,展示了data.table将分组变量与其他变量传递给函数的方式:

my_data[,print(contnt),by=contnt]
# [1] "america"
# [1] "asia"
# [1] "europe"

my_data[,print(num),by=contnt]
# [1] 1
# [1] 2 3
# [1] 4 5 6


本质上,分组变量作为每个组的长度为1的矢量传递,而对于其他变量,每个组的整个矢量都传递。

关于r - r data.table:汇总分组列不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46745706/

10-11 02:38