在R中创建应用于多个数据集的函数

在R中创建应用于多个数据集的函数,r,dplyr,tidyverse,lubridate,R,Dplyr,Tidyverse,Lubridate,我有这段代码,是Stackoverflow用户推荐的,效果非常好。我有 我希望将此代码应用于的几个数据集。 我是否必须不断地将每个数据集应用到代码中,或者我还可以做些什么?(比如将其存储在某种功能中?) 我有两套 df1, df2, df3, df4. I do not wish to rbind these datasets. 每个数据集的Dput: structure(list(Date = structure(1:6, .Label = c("1/2/2020 5:00:00 PM",

我有这段代码,是Stackoverflow用户推荐的,效果非常好。我有 我希望将此代码应用于的几个数据集。 我是否必须不断地将每个数据集应用到代码中,或者我还可以做些什么?(比如将其存储在某种功能中?)

我有两套

df1, df2, df3, df4. I do not wish to rbind these datasets.
每个数据集的Dput:

structure(list(Date = structure(1:6, .Label = c("1/2/2020 5:00:00 PM", 
"1/2/2020 5:30:01 PM", "1/2/2020 6:00:00 PM", "1/5/2020 7:00:01 AM", 
"1/6/2020 8:00:00 AM", "1/6/2020 9:00:00 AM"), class = "factor"), 
Duration = c(20L, 30L, 10L, 5L, 2L, 8L)), class = "data.frame", row.names = c(NA, 
-6L))
代码:

这就是我为每个人所做的:(等)

有没有办法:

 Store_code<-
 df %>%
 group_by(Date = as.Date(dmy_hms(Date))) %>% 
 summarise(Total_Duration = sum(Duration), Count = n())

感谢您的建议。

我们可以使用
mget
将所有对象返回到
列表
,使用
映射
列表
上循环并应用该功能

library(dplyr)
library(lubridate)
library(purrr)
f1 <- function(dat) {
      dat %>%
        group_by(Date = as.Date(dmy_hms(Date))) %>% 
         summarise(Total_Duration = sum(Duration), Count = n())
      }

lst1 <- map(mget(ls(pattern = "^df\\d+$")), f1)
还是在循环中

lst1 <- map(mget(ls(pattern = "^df\\d+$")), f2, 
         datecol = Date, durationcol = Duration)

lst1谢谢!因此,在我的例子中,基本上列表是:map(mget(ls(pattern=“df1,df2,df3”)),f1?@TanishaHudson
pattern='^df\\d+$'
mget(paste0('df',1:3))
确定了吗?我将尝试Hello Akrun,我相信这是成功的,我只是不知道现在如何实际查看数据集,看看它是否工作?好的,我看到了!这很有效,谢谢!我看了名单。视图(lst1)
df1(Store_code)
df2(Store_code)
library(dplyr)
library(lubridate)
library(purrr)
f1 <- function(dat) {
      dat %>%
        group_by(Date = as.Date(dmy_hms(Date))) %>% 
         summarise(Total_Duration = sum(Duration), Count = n())
      }

lst1 <- map(mget(ls(pattern = "^df\\d+$")), f1)
f2 <- function(dat, datecol, durationcol) {
      dat %>%
        group_by(Date = as.Date(dmy_hms({{datecol}}))) %>% 
         summarise(Total_Duration = sum({{durationcol}}), Count = n())
      }
f2(df1, Date, Duration)
lst1 <- map(mget(ls(pattern = "^df\\d+$")), f2, 
         datecol = Date, durationcol = Duration)