对于两个不同的年份,对于每一年,我需要对 1 月 3 日到 3 月 3 日发生的所有销售额求和。我更喜欢 dplyr 解决方案。
我在 stackoverflow 中查看的所有可能的解决方案都使用 SQL,而不是 R。如果有人知道我错过的解决方案,请告诉我。
在 R 中,我知道如何与组合作并使用各种 dplyr 函数,但我需要帮助来完成本文的内容。
我希望输出看起来像这样:
Year Total Sales
2020 138
2021 196
Run Code Online (Sandbox Code Playgroud)
输入
df <- data.frame(date=c(20200102, 20200107, 20200210, 20200215, 20200216, 20200302, 20200305, 20210101, 20210104, 20210209, 20210211, 20210215, 20210317, 20210322),
sales=c(9,14,27,30,33,34,36,44,45,47,51,53,56,58))
Run Code Online (Sandbox Code Playgroud)
比我的 akrun 大师的解决方案少一行:)
ymd的功能。lubridateDayMonth函数仅考虑月份和日期以获取所需的月份和日期间隔yearlibrary(lubridate)
df %>%
mutate(date = ymd(date)) %>%
mutate(DayMonth = format(as.Date(date), "%m-%d")) %>%
group_by(Year=year(date)) %>%
filter(DayMonth>"01-03" & DayMonth<"03-03") %>%
summarise(Total_Sales = sum(sales))
Run Code Online (Sandbox Code Playgroud)
输出:
Year Total_Sales
<int> <dbl>
1 2020 138
2 2021 196
Run Code Online (Sandbox Code Playgroud)