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