[英]Pass multiple functions to map_dfr:map
我正在尝试从AWS数据库中读取几个CSV文件,并且仅在每个.csv文件中保留最旧日期的记录(每个CSV文件包含最近八天,而最旧的日期是最终数据)。 假设文件A包含5月6日至5月14日之间的数据,我想过滤文件A中5月6日的唯一记录,文件B中的仅07等等。
我正在使用map_dfr
从AWS数据库读取数据,但是如何将多个函数传递给purrr::map_dfr
。 我的代码段将正确运行,但是它将保留所有日期/记录,因此~ min(lubridate::ymd(data_date))
似乎没有处理
df <- map_dfr(
objects,
~ s3read_using(
FUN = read_csv,
object = .x,
bucket = "my_bucket"
),
.id = 'Date' , ~ min(lubridate::ymd(data_date)) )
详细阐述paqmo的评论:
library(aws.s3)
library(readr)
library(dplyr)
df <- map_dfr(
objects,
~ s3read_using(
FUN = read_csv,
object = .x,
bucket = "my_bucket"
) %>%
mutate(data_date = lubridate::ymd(data_date)) %>%
dplyr::filter(data_date == min(data_date)),
.id = 'Date'
)
或更清晰(也许):
read_from_s3_and_process <- function(object) {
s3read_using(
FUN = read_csv,
object = object,
bucket = "my_bucket"
) %>%
mutate(data_date = lubridate::ymd(data_date)) %>%
dplyr::filter(data_date == min(data_date))
}
df <- map_dfr(
objects,
read_from_s3_and_process,
.id = 'Date'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.