如何在R中合并12个同结构表格并保留指定8列?
R实现多大型表格合并并筛选指定列的步骤
前提说明
你已经完成了第一个表格的筛选,接下来针对剩余11个表格,用批量处理+合并的方式,既能避免重复写代码,也适配百万级数据的内存需求。
步骤1:整理待处理的表格列表
先把所有需要处理的表格(包括已筛选好的第一个)统一管理,分两种场景:
场景A:表格已加载到R环境中
如果剩余11个表格是类似trip_17_q2、trip_17_q3...trip_17_q12这样命名的对象,先把它们的名字存成向量:
# 生成剩余11个表格的名称向量 table_names <- paste0("trip_17_q", 2:12) # 把已筛选好的第一个表格也加入列表 all_tables <- c(list(trip_17_filt), lapply(table_names, get))
场景B:表格是本地文件(如CSV/Excel)
如果表格存在本地,直接批量读取并筛选:
# 安装并加载必要包(未安装则取消注释第一行) # install.packages(c("dplyr", "readr")) library(dplyr) library(readr) # 获取目标文件夹下所有表格文件的路径(假设是CSV,其他格式替换read_*函数) file_paths <- list.files(path = "你的表格文件夹路径", pattern = "\\.csv$", full.names = TRUE) # 批量读取每个文件并筛选指定列 all_tables <- lapply(file_paths, function(file) { read_csv(file) %>% select(trip_id, start_time, tripduration, from_station_id, to_station_id, usertype, gender, birthyear) })
步骤2:合并所有表格
推荐两种合并方式,后者更适合百万级大数据:
用dplyr合并(代码简洁)
library(dplyr) final_merged_table <- bind_rows(all_tables)
用data.table合并(大数据首选)
# 安装并加载data.table(未安装则取消注释第一行) # install.packages("data.table") library(data.table) final_merged_table <- rbindlist(all_tables, fill = TRUE) # 如需转成data.frame格式 final_merged_table <- as.data.frame(final_merged_table)
可选内存优化建议
针对百万级数据,还能进一步降低内存占用:
- 读取文件时用
vroom::vroom替代read_csv,速度更快且内存友好 - 合并前把类别有限的字符列转成因子:
all_tables <- lapply(all_tables, function(df) { df %>% mutate(across(c(usertype, gender), as.factor)) })
内容的提问来源于stack exchange,提问作者Debrup Mukherjee
相关产品推荐
相关产品推荐

