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

使用R语言dplyr合并两个CSV文件并去重生成未联系受访者名单

R语言筛选未联系调研受访者操作指南

前置说明

我们可以用两种方法实现:基础R无需安装额外包,或者用tidyverse套件语法更简洁易懂,更适合入门用户。

步骤1:读取两份CSV文件

基础R写法

# 读取尚未发起调研的受访者名单
raw_contacts <- read.csv("你的第一份文件路径.csv", stringsAsFactors = FALSE)
# 读取已完成联系的受访者名单
completed_contacts <- read.csv("你的第二份文件路径.csv", stringsAsFactors = FALSE)

tidyverse写法(需先运行install.packages("tidyverse")安装包)

library(tidyverse)
raw_contacts <- read_csv("你的第一份文件路径.csv")
completed_contacts <- read_csv("你的第二份文件路径.csv")

注意:请将代码中的文件路径替换为你本地CSV的实际存储路径,优先使用绝对路径避免读取失败

步骤2:筛选仅未联系的受访者

核心逻辑是保留初始未联系名单中,不存在于已联系名单的记录,两份数据需要有唯一标识列(比如受访者ID、手机号,能唯一确定一个人的字段)做匹配,假设这个共同列叫respondent_id,你可以替换成自己实际的列名。

基础R写法

# 筛选出raw_contacts中respondent_id不在completed_contacts里的记录
uncontacted <- raw_contacts[!raw_contacts$respondent_id %in% completed_contacts$respondent_id, ]

tidyverse写法(更直观)

# 反连接:保留左表(raw_contacts)中无法和右表匹配的所有记录
uncontacted <- raw_contacts %>%
  anti_join(completed_contacts, by = "respondent_id")

如果需要用多个字段匹配,可将by参数改成by = c("手机号", "姓名")的格式

步骤3:导出结果到新CSV

基础R写法

write.csv(uncontacted, "未联系受访者最终名单.csv", row.names = FALSE)

tidyverse写法

write_csv(uncontacted, "未联系受访者最终名单.csv")

row.names = FALSE参数用于避免导出额外的行号列,tidyverse的write_csv默认不导出行号

常见问题排查

  • 匹配结果和预期行数不一致时,先检查两份文件的唯一标识列格式是否一致,比如字符型的"001"和数值型的1会被判定为不同值
  • 导出前可以先运行nrow(raw_contacts) - nrow(completed_contacts)估算预期结果行数,运行nrow(uncontacted)核对是否符合预期
  • 可以运行head(uncontacted)预览前几行数据,确认内容无误再导出使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:12:00