繁体   English   中英

将多个函数传递给map_dfr:map

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM