R语言如何基于lookup查找表将id对应value值均分至关联ref
解决方案
你不需要走宽表转置的复杂逻辑,直接通过分组计数、表关联、分组求和三步就能实现需求,代码如下:
先加载依赖包:
library(dplyr)
核心实现代码:
# 转换df的value为数值类型,避免运算报错 df <- df %>% mutate(value = as.numeric(value)) output <- lookup %>% # 统计每个id对应的ref总数量,用于后续分摊计算 group_by(id) %>% mutate(ref_num = n()) %>% ungroup() %>% # 关联df的原始value值 left_join(df, by = "id") %>% # 计算当前行ref分摊到的数值 mutate(split_value = value / ref_num) %>% # 按ref分组求和得到最终结果 group_by(ref) %>% summarise(value = sum(split_value))
执行后得到的output和你期望的结果完全一致。
内容的提问来源于stack exchange,提问作者hoho
相关产品推荐
相关产品推荐

