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

时间:2012-11-23 09:04:19

标签: 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
  1. 我想直接命名V1(默认)列(不必使用colnames),是否可能?
  2. 此外,是否可以在一个命令中执行多个操作组,这将导致类似:

       x V1 V2
    1: a 6  something
    2: b 15 something
    
  3. 由于

2 个答案:

答案 0 :(得分:23)

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

由于您不熟悉data.table,因此我建议您也学习setnames功能的帮助页以及?data.tabledata.table小插曲。

答案 1 :(得分:0)

为简洁起见,您现在可以使用.()代替list()

DT[, .(z=sum(y)+3, a=mean(y*z)), by=x]