r - 将多个函数传递给 map_dfr:map
问题描述
我正在尝试从 AWS 数据库中读取几个 CSV 文件,并且只保留每个 .csv 文件中最早日期的记录(每个 CSV 文件包含最后八天,只有最旧的日期是最终数据)。假设文件 A 包含 5 月 6 日至 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'
)
推荐阅读
- json - 将数组转换为对象内的对象
- amazon-web-services - 如何显式设置 sagemaker 自动驾驶仪的验证集?
- javascript - 推送到 React Native 中的嵌套数组和 Firebase
- angular-cli - ng 在特定文件夹中服务
- r - 有没有办法使用 R 转换 BAK?
- html - 当包含文本输入字段时,如何防止 flexbox 变宽?
- ios - 如何安排 iOS 用户之间发送的推送通知
- r - 如何在 R 中循环一周中的几天
- ios - Expo ios Build error: You are not allowed to perform this Operation
- flutter - Flutter - seo优化