如何合并R数据框两列长度值并匹配对应study_id生成新表
R 数据框合并通用解决方案
你可以通过「宽表转长表+多字段匹配关联」的逻辑实现需求,该方案适配大规模、多字段的复杂场景,代码如下:
首先加载依赖包:
library(tidyverse)
步骤1:将df1转为长格式,合并长度列
该步骤不需要硬编码长度列名,所有后缀为_length的列都会自动拆分,后续新增同类字段无需修改逻辑:
df1_long <- df1 %>% pivot_longer( cols = ends_with("_length"), names_to = "object", values_to = "length", names_pattern = "(.*)_length" )
步骤2:与df2关联匹配study_id
通过identifier1、identifier2、object三个唯一组合字段关联,自动匹配对应的study_id:
df3 <- df1_long %>% left_join(df2, by = c("identifier1", "identifier2", "object"))
如果需要调整列的展示顺序,比如将study_id放在首列,可以追加relocate逻辑:
df3 <- df3 %>% relocate(study_id, .before = everything())
方案通用性说明
- 适配任意数量的
*_length类型字段,新增物品类型不需要修改转换逻辑 - 多键关联匹配精准,不会出现数据错配,适合百万级以上规模数据处理
- 会自动保留df1、df2中除关联键外的其他自定义字段,无需额外配置
内容的提问来源于stack exchange,提问作者clc
相关产品推荐
相关产品推荐

