R语言含重复行的数据转换求助:实现指定表格结构转换
解决方案
你需要结合pivot_longer和pivot_wide两步操作来实现格式转换:
- 先用
pivot_longer把B、G、R、Y这类颜色列转为长格式,提取颜色名称和对应数值; - 再用
pivot_wide把inst列的不同取值转为列名,并加上指定前缀。
完整代码示例:
library(tidyverse) # 构造原始数据 df <- tibble( inst = c(0, 3), fish_ID = c(1, 1), B = c(136, 510), G = c(140, 7), R = c(249, 108), Y = c(68, 13) ) # 格式转换 result <- df %>% pivot_longer(cols = B:Y, names_to = "Color", values_to = "Value") %>% pivot_wider(names_from = inst, values_from = Value, names_prefix = "inst_") print(result)
运行后得到的结果与目标格式一致:
| fish_ID | Color | inst_0 | inst_3 |
|---|---|---|---|
| 1 | B | 136 | 510 |
| 1 | G | 140 | 7 |
| 1 | R | 249 | 108 |
| 1 | Y | 68 | 13 |
你之前仅使用了pivot_longer,缺少后续的宽格式转换步骤,因此没能得到目标结果。
内容的提问来源于stack exchange,提问作者Balina
相关产品推荐
相关产品推荐

