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

在R中合并相似列名的列,提取REQID与PRODUCTID对应组合

解决方案

假设你的数据框名为df,可以用tidyverse工具链快速解决这个问题:

1. 加载依赖包

library(tidyverse)

2. 提取有效需求ID列

把所有以REQID开头的列转成单列,只保留非空值:

req_data <- df %>%
  select(starts_with("REQID")) %>%
  pivot_longer(cols = everything(), names_to = NULL, values_to = "RequirementID") %>%
  drop_na(RequirementID)

3. 提取有效产品ID列

用同样逻辑处理PRODUCTID相关列:

prod_data <- df %>%
  select(starts_with("PRODUCTID")) %>%
  pivot_longer(cols = everything(), names_to = NULL, values_to = "Product") %>%
  drop_na(Product)

4. 合并并去重

因为原始数据每行对应一组有效组合,直接按行合并后提取唯一值即可:

final_result <- bind_cols(req_data, prod_data) %>%
  distinct()

示例验证

如果你的原始数据是:

df <- tibble(
  REQID = c("R001", NA, NA),
  REQID22 = c(NA, "R022", NA),
  REQID433 = c(NA, NA, "R433"),
  PRODUCTID = c("P001", NA, NA),
  PRODUCTID12 = c(NA, "P012", NA),
  PRODUCTID236 = c(NA, NA, "P236")
)

运行代码后,final_result会输出:

RequirementIDProduct
R001P001
R022P012
R433P236

这个方法完全基于原始数据中已有的对应关系,不会生成额外的无效组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 09:27:05