20

我是 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
    

谢谢

4

2 回答 2

26
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插曲。

于 2012-11-23T09:22:25.860 回答
1

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

DT[, .(z=sum(y)+3, a=mean(y*z)), by=x]
于 2020-04-02T12:55:19.393 回答