在使用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中。