R如何迭代S3上的CSV文件并按文件名分类合并为3个dataframe
R语言S3批量读取CSV并按文件名分类合并实现方案
首先确保你已安装所需依赖包,没有安装的话先执行安装:
install.packages(c("aws.s3", "purrr", "dplyr"))
完整实现代码
# 加载依赖 library(aws.s3) library(purrr) library(dplyr) # 替换为你存储文件名的原始dataframe名,这里默认你的文件名表叫file_df # 1. 生成包含-callers-的合并数据表 callers_df <- file_df$Key %>% # 筛选符合规则的文件名 .[grepl("-callers-", .)] %>% # 批量读取后按行合并 map_dfr(~ s3read_using(read.csv, object = paste0("s3://abc-testtalk/", .x))) # 2. 生成包含-results的合并数据表(排除script_results避免重复匹配) results_df <- file_df$Key %>% .[grepl("-results", .) & !grepl("-script_results-", .)] %>% map_dfr(~ s3read_using(read.csv, object = paste0("s3://abc-testtalk/", .x))) # 3. 生成包含-script_results-的合并数据表 script_results_df <- file_df$Key %>% .[grepl("-script_results-", .)] %>% map_dfr(~ s3read_using(read.csv, object = paste0("s3://abc-testtalk/", .x)))
注意说明
- 若你存储文件名的dataframe不叫
file_df,请将代码中对应位置替换为你实际的变量名 map_dfr会自动对齐不同文件的列名,列不一致的位置会自动填充NA- 若CSV文件有特殊读取要求(如自定义分隔符、跳过首行、指定编码等),直接在
read.csv中加对应参数即可,例如read.csv(sep = ";", skip = 1, fileEncoding = "UTF-8")
内容的提问来源于stack exchange,提问作者wizkids121
相关产品推荐
相关产品推荐

