我需要使用 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/