使用data.table在"group by"操作中设置列名

sta*_*ant 16 r data.table

我是R中data.table包的新用户.我试图给"group by"命令创建的新列命名

> DT = data.table(x=rep(c("a","b"),c(2,3)),y=1:5) 
> DT
x y
1: a 1
2: a 2
3: b 3
4: b 4
5: b 5
> DT[,{z=sum(y);z+3},by=x]
x V1
1: a 6
2: b 15
Run Code Online (Sandbox Code Playgroud)
  1. 我想直接命名V1(默认)列(不必使用colnames),是否可能?
  2. 另外,是否可以在一个命令中执行多个操作组,这将导致类似于:

       x V1 V2
    1: a 6  something
    2: b 15 something
    
    Run Code Online (Sandbox Code Playgroud)

谢谢

Rol*_*and 23

DT[,list(z=sum(y)+3,a=mean(y*z)),by=x]
   x  z  a
1: a  6  9
2: b 15 60
Run Code Online (Sandbox Code Playgroud)

既然你是新来data.table的,我建议你也学习的帮助页面setnames功能以及?data.tabledata.table护身符.

  • +1我不确定statquant是否想要重命名`by`列.我无法在?data.table,常见问题解答或SO中轻松找到(令人惊讶的是,因此会添加到?data.table).如果他们确实需要,那就是:`DT [,<和你一样,by = list(newname = x)]`. (6认同)
  • @MatthewDowle有趣.但是,简单地使用`setnames`可以使代码保持简单.我通常更喜欢超过单行,这往往会有点复杂. (4认同)
  • 多克斯家伙们,这对两个问题都有好处.顺便说一句,马修,这个包是一个巨大的帮手,我正在处理5亿6千万行的数据框架,我所拥有的古代盒子正在取芯......不再是data.table了. (4认同)