如何使用R从8份会议参会名单中筛选出席至少7次会议的人员
实现思路
- 先将8份参会名单统一导入R,每份仅保留姓名(若有重名风险可补充手机号、单位等唯一标识列),提前统一姓名格式避免同一人因写法差异被识别为不同条目
- 给每份名单新增会议标识列,将所有名单合并为总表
- 按姓名分组,统计每个姓名对应的唯一会议标识数量,即参会总场次
- 筛选出参会场次≥7的条目即为目标结果
代码示例
# 依赖包安装,已安装可跳过 # install.packages("tidyverse") # 若读Excel文件可额外安装:install.packages("readxl") library(tidyverse) # 假设所有参会名单放在同级目录conf_list文件夹下,命名格式为conf_1.csv到conf_8.csv file_path <- list.files(path = "conf_list", pattern = "conf_\\d+\\.csv", full.names = TRUE) # 批量读入所有名单并合并 total_df <- map_dfr(file_path, function(x){ # 读入单份名单,提取姓名列,新增会议ID列 read_csv(x, col_select = name) %>% mutate(conf_id = str_extract(x, "conf_(\\d+)") %>% str_remove("conf_")) }) # 姓名标准化:统一转小写、去除多余空格、删除特殊符号,避免格式差异导致统计错误 total_df <- total_df %>% mutate(name = str_to_lower(name) %>% str_squish() %>% str_remove_all("[^a-zA-Z0-9\\u4e00-\\u9fa5]")) # 统计每人参会次数 attend_stat <- total_df %>% group_by(name) %>% summarise(attend_count = n_distinct(conf_id), .groups = "drop") # 筛选至少参加7场的人员 target_people <- attend_stat %>% filter(attend_count >= 7) # 查看结果 print(target_people) # 导出结果到本地:write_csv(target_people, "high_attendance_people.csv")
注意事项
- 如果你的名单是Excel格式,将代码中的
read_csv替换为readxl::read_excel,同步调整文件匹配的后缀规则即可 - 存在重名情况时,建议给姓名补充单位、工号等唯一标识后再做分组统计,避免结果误差
- 若有参会者存在多套姓名写法(比如中文名的全称/简称、英文名的全称/昵称),可提前做姓名映射表统一替换后再执行统计
内容的提问来源于stack exchange,提问作者Alfred Bach
相关产品推荐
相关产品推荐

