我想使用 data.table 来计算每个指定组的变量。为简单起见,假设数据根据 x1 中的组进行拆分:
x1 x2
a 3
a 4
b 1
b 5
我想为每个组的平均值创建一个变量,但我不知道如何索引每个组:
DT[,list(
mean_a=mean(x2) #for all rows containing "a"
mean_b=mean(x2) #for all rows containing "b"
by="x1")]
如何用注释重写行?(即找到所有带有“a”的行的平均值,对于“b”也是如此)
我需要将输出作为单独列中的 data.table ,因为它将被进一步处理:
mean_a mean_b
3.5 3
编辑:玩弄它之后,这是我想要的解决方案。
> DT2=DT[,list(
+ mean_a=mean(x[grep("a",x1),x2]),
+ mean_b=mean(x[grep("b",x1),x2])),
+ by=NULL]
>
> DT2
mean_a mean_b
1: 3.5 3
它不如弗兰克的效率高,但这是我最初要求的,即用评论重写行。