簡體   English   中英

在 R 中聚合數據條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM