我正在使用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/