[英]Aggregate data conditional in R
考慮以下數據框:
d <- data.frame(a = c("s10","s20","s30"),
b = c("1000","200","1000"),
c = c("3000","50","60"))
a b c
1 s10 1000 3000
2 s20 200 50
3 s30 1000 60
我想根據以下數據框聚合它:
e <- data.frame(a = c("s10","s10","s10","s20","s30"),
b = c("t10","t40","t30","t20","t60"),
c = c("0.33","0.33","0.33","1","1"))
a b c
1 s10 t10 0.33
2 s10 t40 0.33
3 s10 t30 0.33
4 s20 t20 1
5 s30 t60 1
所以我得到下表:
a b c
1 t10 333.3 1000
2 t40 333.3 1000
3 t30 333.3 1000
4 t20 200 50
5 t60 1000 60
也就是說,從數據框“e”中,文本“s10”進入三個不同的文本(“t10”、“t40”和“t30”),因此數據框“b”和“c”列中的值d”應乘以數據框 e 中“c”列的份額(即 1,000 * 0.33 和 3,000 * 0.33)。 其余的值依此類推。
下面是一個選項left_join
上的“a”的列,然后transmute
由列乘以
library(dplyr)
left_join(type.convert(e, as.is = TRUE),
type.convert(d, as.is = TRUE), by = 'a') %>%
transmute(a = b.x, b = c.x * b.y, c = c.x * c.y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.