基于R语言合并多份Scopus文献CSV文件并去除重复项
用R合并Scopus导出的CSV文件并去重
准备工作
- 将所有Scopus导出的CSV文件放在同一个文件夹下,确保所有文件的列结构完全一致(Scopus默认导出格式统一,只要未手动修改列名即可)
- 可选择安装
tidyverse包(高效的文件读取与数据处理工具集),或直接用base R实现(无需额外包)
方法一:用tidyverse(推荐,高效易读)
# 首次使用时安装包 install.packages("tidyverse") # 加载包 library(tidyverse) # 设置工作目录为CSV所在文件夹,替换为你的实际路径 setwd("~/你的文件夹路径/Scopus_Results") # 获取文件夹内所有CSV文件的完整路径 csv_files <- list.files(pattern = "\\.csv$", full.names = TRUE) # 批量读取所有CSV并合并为单个数据框 combined_data <- map_dfr(csv_files, ~read_csv(.x, show_col_types = FALSE)) # 基于Scopus唯一标识EID去重,保留所有列 unique_data <- combined_data %>% distinct(EID, .keep_all = TRUE) # 保存去重后的结果 write_csv(unique_data, "scopus_combined_unique.csv")
方法二:用base R(无需额外包)
如果不想安装第三方包,用base R也能完成操作:
# 设置工作目录 setwd("~/你的文件夹路径/Scopus_Results") # 获取所有CSV文件名 csv_files <- list.files(pattern = "\\.csv$", full.names = TRUE) # 批量读取并合并文件 combined_data <- do.call(rbind, lapply(csv_files, function(file) { read.csv(file, stringsAsFactors = FALSE, fileEncoding = "UTF-8") })) # 基于EID去除重复项 unique_data <- combined_data[!duplicated(combined_data$EID), ] # 保存最终结果 write.csv(unique_data, "scopus_combined_unique.csv", row.names = FALSE, fileEncoding = "UTF-8")
关键说明
- 去重依据选择:优先使用
EID——这是Scopus为每篇文献分配的唯一标识符,能完全避免误判不同文献为重复;若需用DOI去重,将代码中的EID替换为DOI即可,但注意部分文献可能无DOI - 性能优化:
read_csv(tidyverse)比base R的read.csv读取速度更快,处理大量文件或大体积CSV时优势明显 - 列结构检查:如果合并后出现NA列,说明部分CSV的列名不一致,可运行
map(csv_files, ~names(read_csv(.x, n_max = 1)))检查所有文件的列名,确保统一
内容的提问来源于stack exchange,提问作者Rfanatic
相关产品推荐
相关产品推荐

