r - cumsum 有几个组和不连续的日期
问题描述
我有这种情况:
library(dplyr)
library(lubridate)
df <- data.frame(
date = c(
as.Date("2015-3-1")
, as.Date("2015-1-1")
, as.Date("2015-5-1")
)
,cat1 = as.factor(c("cat11","cat11","cat11"))
,cat2 = as.factor(c("cat21","cat21","cat21"))
,x = c(1,2,3)
)
我想按日期顺序计算每个 cat1 x cat2 组合的 x 的累积总和(组合为 2 => 3 => 6)。这是我尝试过的:
df %>%
group_by(
date
, cat1
, cat2
) %>%
arrange(
date,
cat1,
cat2
) %>%
mutate(
cumsum_x = cumsum(x)
) %>%
ungroup()
错误的结果是:
有人可以这样并提出解决方案吗?请注意,这应该适用于更多类别组合,并且应根据可能不连续的日期的顺序分别为每个组合计算累积总和。
解决方案
df %>%
group_by(cat1
, cat2
) %>%
arrange(
date
) %>%
mutate(
cumsum_x = cumsum(x)
) %>%
ungroup()
推荐阅读
- python-3.x - 带有 Python 3 的 MacOS 上的 Ansible 2.10
- python - 从 infile 获取列表中的前 3 个数字 - python
- snowflake-cloud-data-platform - 雪花表中 DEFAULT 选项的行为
- python - Python:枚举与类
- pyspark - 如何在pyspark中编写嵌套if else?
- python - python qpageview - 如何绘制一个矩形
- shell - “通配符”对象没有属性“输出”
- javascript - 监听API调用成功
- java - 如何在 Java 中打印默认值而不在 Oracle 函数中添加默认参数化值?
- docker - 将数据从 docker-compose 自动创建的卷复制到新的外部卷