使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象

标签 r amazon-s3

我需要使用 R 中的 aws.s3 包从 AWS S3 存储桶读取多个 csv 文件,最后将这些文件合并到单个数据帧中以进行进一步分析。

假设我的 S3 存储桶中有几个文件,例如“variables_2019-08-12.csv”、“variables_2019-08-13.csv 和”variables_2019-08-14.csv rtc。

我正在使用aws.s3::s3read_using,但对于object部分我每次只能读取一个csv文件。文件的名称中有一个日期,所以我想知道如何在这里添加一个循环:

my_file <- 
s3read_using(FUN = read_csv, object = "variables_2019-08-12.csv", bucket = "my_bucket")

最佳答案

在 R 中有很多方法可以做到这一点,但对我来说最直观的是使用 map_dfr来自 {purrr} 包:

objects = c('variables_2019-08-12.csv', 'variables_2019-08-13.csv', …)
names(objects) = gsub('variables_(.*)\\.csv', '\\1', objects)
df = map_dfr(
    objects,
    ~ s3read_using(FUN = read_csv, object = .x, bucket = 'my_bucket'),
    .id = 'Date'
)

由于 names(objects) 赋值,并且由于我们指定 .id = 'Date',结果数据框将有一个包含日期的附加列 (基于每个条目的文件名。

关于使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57605933/

相关文章:

ssl - "Peer not authenticated"带 Mule S3 连接器

r - 使用工具提示时 ggvis 图上的图例重叠

javascript - 来自 Amazon S3 存储桶的图像在第一次请求中未显示

amazon-web-services - 如何使用 boto3 访问存储桶

r - 如何将 lapply 与传递给 2-way tabyl 的列列表一起使用

amazon-web-services - 我们是否需要目录结构逻辑来在 Amazon S3/Cloudfront 上存储数百万张图像?

amazon-web-services - Amazon S3 客户端 setReadLimit

r - 如果一列中的值重复,如何将另一列的某些值提取到新列中?

r - 如何测试多个条件?

r - 如何使用 R 计算字符串中的 CAPSLOCK