我正在尝试在data.table中进行一些聚合,我正面临一个无法找到解决方案的挑战。挑战非常简单,我想总结一下多个维度中data.table中的一些值。
我可以使用以下代码来解决问题:
Export4R[,sum(units),by=Type]
这提供了以下内容:
Type Value
foobar 45
barfoo 25
但现在我想进一步打破它,并希望得到这样的表:
Type Month Value
foobar Mar 12
foobar Apr 7
....
我尝试使用一行代码执行此操作,但不幸的是,这似乎不起作用:
Export4R[,sum(units),by=Type,Month]
这很可能是一个非常简单的问题,但我在找到答案时遇到了问题。
感谢您的帮助!
答案 0 :(得分:3)
Export4R[,sum(units),by="Type,Month"]
或
Export4R[,sum(units),by=list(Type,Month)]
后一种语法允许表达列名和命名;如,
Export4R[,sum(units),by=list(Grp1=substring(Type,1,2), Grp2=Month)]
顺便说一句,您可以通过多行格式化长查询:
Export4R[,list(
s = sum(units)
,m = mean(units)
),by=list(
Grp1=substring(Type,1,2)
,Grp2=Month
)]
将逗号放在开头的原因是,您可以轻松添加和注释掉列,而不会弄乱最后一项的右括号; e.g,
Export4R[,list(
s = sum(units)
# ,m = mean(units)
),by=list(
Grp1=substring(Type,1,2)
# ,Grp2=Month
)]
这个想法来自SQL。