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

R语言如何匹配两个CSV的指定列并为CSV_A新增列填充对应值

R语言实现方案

问题说明

你的现有脚本错误地直接覆盖了CSV_A的Shipping_ID列,未新增目标列提取CSV_B的Previous Status值,因此无法得到预期结果。

完整实现代码(tidyverse版,适配你已加载的依赖)

library(tidyverse)

# 配置文件路径
csv_a_path <- 'C:/Users/Userid/Desktop/csv/CSV_A.csv'
csv_b_path <- 'C:/Users/Userid/Desktop/csv/CSV_B.csv'
output_path <- 'C:/Users/Userid/Desktop/csv/modified_CSV_A.csv' # 替换为你的实际导出路径

# 读取文件,check.names=FALSE保留原列名的空格
csv_a <- read.csv(csv_a_path, check.names = FALSE)
csv_b <- read.csv(csv_b_path, check.names = FALSE)

# 关联匹配新增列
result <- csv_a %>%
  left_join(
    csv_b %>% select(Customer_ID, `Previous Status`),
    by = c("Shipping_ID" = "Customer_ID")
  ) %>%
  rename(`New Column` = `Previous Status`)

# 导出结果,na=""将未匹配的空值设为空白,符合预期输出格式
write.csv(result, output_path, row.names = FALSE, na = "")

基础R版实现(无需tidyverse依赖)

如果你不想引入额外依赖,也可以修正你原本的match逻辑实现:

# 读取文件
csv_a <- read.csv('C:/Users/Userid/Desktop/csv/CSV_A.csv', check.names = FALSE)
csv_b <- read.csv('C:/Users/Userid/Desktop/csv/CSV_B.csv', check.names = FALSE)

# 匹配填充新列
csv_a$`New Column` <- csv_b$`Previous Status`[match(csv_a$Shipping_ID, csv_b$Customer_ID)]

# 导出结果
write.csv(csv_a, 'C:/Users/Userid/Desktop/csv/modified_CSV_A.csv', row.names = FALSE, na = "")

注意事项

如果不需要保留列名中的空格,可以去掉check.names = FALSE参数,对应列名需要改为Previous.Status、Current.Status即可正常调用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 00:18:01