在使用R时,我经常感兴趣的是对data.frame执行操作,其中我根据组汇总变量,然后希望将这些汇总值添加回数据。帧。按组拉伸行间汇总值
myDF <- data.frame(A = runif(5), B = c("A", "A", "A", "B", "B"))
myDF$Total <- with(myDF, by(A, B, sum))[myDF$B]
myDF$Proportion <- with(myDF, A/Total)
其产生:这是最容易通过示例所示
A B Total Proportion
1 0.5272734 A 1.7186369 0.3067975
2 0.5105128 A 1.7186369 0.2970452
3 0.6808507 A 1.7186369 0.3961574
4 0.2892025 B 0.6667133 0.4337734
5 0.3775108 B 0.6667133 0.5662266
这招 - 基本上获得指定值的向量,并且“传播”或跨相关的行“拉伸”他们虽然class(myDF$Total)
是"array"
,除非我将by()
置于c()
之内。
我很纳闷:
- 是否有此操作的常用名称?
- 是否还有另外一种不太冒昧的感觉和/或更快的做法?
- 有没有办法用
dplyr
来做到这一点?也许有哈德利批准的动词操作(如变异,排列等),我不知道。我知道这很容易summarise()
,但我经常需要将这些摘要放回到data.frame中。