有没有一种简单的方法来实现类似于`x [,c:= mean(a),by = b] $ c`的东西?

col*_*ang 5 r ggplot2 data.table

> x <- data.table(a=1:10, b=rep(1:2, 5))
> x
     a b
 1:  1 1
 2:  2 2
 3:  3 1
 4:  4 2
 5:  5 1
 6:  6 2
 7:  7 1
 8:  8 2
 9:  9 1
10: 10 2
> x[,c:=mean(a), by=b]
> y <- x$c
> y
 [1] 5 6 5 6 5 6 5 6 5 6
Run Code Online (Sandbox Code Playgroud)

最终,我感兴趣的y是一个向量,我不想添加cdata.table.有没有更简单的方法y从原来的x

当我试图在直方图中对不同的组应用不同的权重时出现问题.

# here weight would be the same for all colour, but I wish they differ.
geom_freqpoly(aes(colour=group, weight=mean(y)), binwidth=1)
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 4

> with(x, ave(a, b, FUN=mean) )
 [1] 5 6 5 6 5 6 5 6 5 6
Run Code Online (Sandbox Code Playgroud)

只是为了让 data.table 专家知道,我知道这可能无法很好地扩展到数百万条记录数据集,并且我很欣赏有关此主题的其他帖子。我一直在使用 data.table 对我的大型分析产生良好的效果。这只是因为我表达了对简单性和不修改数据论证的渴望。