我有从Stackoverflow用户推荐的此代码,该代码效果很好。我希望将这些代码应用于多个数据集。我是否必须不断将每个数据集应用于代码,还是可以做其他事情?(像将其存储在某种功能中一样?)
我有detsets
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))
码:
df %>%
group_by(Date = as.Date(dmy_hms(Date))) %>%
summarise(Total_Duration = sum(Duration), Count = n())
这就是我为每个人所做的:(等)
df1 %>%
group_by(Date = as.Date(dmy_hms(Date))) %>%
summarise(Total_Duration = sum(Duration), Count = n())
df2 %>%
group_by(Date = as.Date(dmy_hms(Date))) %>%
summarise(Total_Duration = sum(Duration), Count = n())
df3 %>%
group_by(Date = as.Date(dmy_hms(Date))) %>%
summarise(Total_Duration = sum(Duration), Count = n())
有没有办法:
Store_code<-
df %>%
group_by(Date = as.Date(dmy_hms(Date))) %>%
summarise(Total_Duration = sum(Duration), Count = n())
然后将每个数据集轻松地应用于此代码?
df1(Store_code)
df2(Store_code)
任何建议表示赞赏。
我们可以用于mget
将所有对象返回到中list
,用于map
遍历list
并应用函数
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)
在这里,我们假设所有数据集中的列名都相同,即“ Date”,“ Duration”。如果它是另一个,则可以作为另一个参数传递给函数
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句