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

时间:2019-08-22 09:17:04

标签: 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")

1 个答案:

答案 0 :(得分:1)

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

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',因此,结果数据框将具有一个附加列,其中包含每个条目的日期(基于文件名)。