【发布时间】:2021-11-06 15:02:30
【问题描述】:
我有一个包含 id 和相关值的数据集:
df <- data.frame(id = c("1", "2", "3"), value = c("12", "20", "16"))
我有一个将id 与另一个参考标签ref 匹配的查找表:
lookup <- data.frame(id = c("1", "1", "1", "2", "2", "3", "3", "3", "3"), ref = c("a", "b", "c", "a", "d", "d", "e", "f", "a"))
注意id到ref是多对多匹配:同一个id可以关联多个ref,同一个ref可以关联多个id。
我正在尝试将与df$id 列关联的value 平均拆分为关联的ref 列。输出数据集如下所示:
output <- data.frame(ref = "a", "b", "c", "d", "e", f", value = "18", "4", "4", "14", "4", "4")
| ref | value |
|---|---|
| a | 18 |
| b | 4 |
| c | 4 |
| d | 14 |
| e | 4 |
| f | 4 |
我尝试将其分为四个步骤:
- 在
lookup上调用pivot_wider,将具有相同id值的行转换为列(例如,a、b、c。) - 基于
id合并两个数据集 - 将每个
df$value平分成a、b、c等不为空的列 - 转置数据集并对
id列求和。
不过,我不知道如何使步骤 (3) 起作用,我怀疑有一种更简单的方法。
【问题讨论】: