r - 如果在 dplyr r 中将列与 groupby 匹配,则求和
问题描述
我需要帮助来使用 dplyr 和 group_by “sumif”,就像这样:
样本df:
df = data.frame(year = c(1990,1990,1990,1990,1990,1990,1990,1990,1990,1990,1990,1990,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991,1991),
month = c(seq(1,12), seq(1,12)),
value = c(2,4,5,3,4,6,7,5,4,3,6,4,5,6,5,4,5,6,4,3,5,6,4,6))
df %>%
group_by(year) %>%
mutate(summonths12345 = "sum of values of months 1,2,3,4,5")
这是我的 df 的主要目标:
year month value summonths12345
1990 1 2 18
1990 2 4 18
1990 3 5 18
1990 4 3 18
1990 5 4 18
1990 6 6 18
1990 7 7 18
1990 8 5 18
1990 9 4 18
1990 10 3 18
1990 11 6 18
1990 12 4 18
1991 1 5 25
1991 2 6 25
... .. .. ...
解决方案
添加过滤器并重新加入。可能效率不高,但效果很好。
summary <- df %>%
filter(month < 6) %>%
group_by(year) %>%
summarize(summonths12345 = sum(value)) %>%
right_join(df, by="year")
您是否需要它是动态的,就像在 YTD 类型函数中一样?
library(lubridate)
summary <- df %>%
filter(month < month(Sys.Date())) %>%
group_by(year) %>%
summarize(summonths12345 = sum(value)) %>%
right_join(df, by="year")
推荐阅读
- python - python中的时间序列,其中日期在标题中
- highcharts - Highcharts中带有梯度图例的填充气泡图
- python - 无法使用 os.environ 在 Python 脚本中访问 Jenkins 环境变量
- sql - 如何使用 SQL 选择计数最高的父项和子项
- reactjs - 如何在 TailWindCSS 中使用诸如 fontsource 之类的 Web 字体库
- sql-server - 使用 Azure Active Directory Interactive BCP 输入/输出多个文件
- reactjs - 反应路由器链接不是重新渲染组件
- python - python,Selenium“CTRL + S”保存视频不起作用
- java - 写入多个文件时新行分布不均匀
- jquery - 如何避免 JQuery 与其他库冲突