You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现含|分隔多标识数据框基于部分匹配的合并操作

R实现含多值分隔符列的部分匹配合并

你需要的效果可以通过两种常用方式实现:

方法1:基础R实现(无需安装额外包)

核心思路是遍历拆分df1的ID2列,逐一匹配后拼接结果:

# 直接为df1新增匹配后的ID3列
df1$ID3 <- sapply(strsplit(df1$ID2, split = "\\|"), function(x) {
  # 筛选匹配到的ID3
  matched_id3 <- df2$ID3[df2$ID2 %in% x]
  # 多结果用|拼接,无匹配返回空字符串,可按需改为NA
  paste(unique(matched_id3), collapse = "|")
})

运行后直接输出df1即可得到预期结果:

> df1
  ID1      ID2   ID3
1  A1    B1|B2 C1|C2
2  A2       B1    C1
3  A3       B3    C3
4  A4    B6|B4    C4
5  A5 B0|B6|B3    C3

方法2:tidyverse实现(代码可读性更强)

适合习惯tidyverse语法的场景,通过拆分-匹配-汇总的流程实现:

library(tidyverse)

df_result <- df1 %>%
  # 按|拆分ID2为长格式,每行仅存一个ID2值
  separate_rows(ID2, sep = "\\|") %>%
  # 左连接匹配df2的ID3
  left_join(df2, by = "ID2") %>%
  # 按原始ID1分组汇总
  group_by(ID1) %>%
  summarise(
    # 还原原始ID2格式
    ID2 = paste(ID2, collapse = "|"),
    # 拼接匹配到的ID3,自动跳过无匹配的NA
    ID3 = paste(na.omit(unique(ID3)), collapse = "|")
  ) %>%
  ungroup()

运行输出df_result和预期结果完全一致。


内容的提问来源于stack exchange,提问作者Kak Schoen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:48:05