将 cumsum 与 mutate 一起使用

问题描述 投票:0回答:1

我正在尝试使用

cumsum
mutate
创建一个显示随时间增长的列。通过命名相关列,我可以使用
cumsum
生成我想要的内容 - 但最终目标是使用
across
cumsum
应用于任意数量的列。 (我想我应该先把它放在一列上......)

这就是我正在处理的事情

dat <- data.frame(year=c("2008", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023"), count = c(1, 1, 1, 1, 1, 1, 2, 3, 3, 3, 0, 2, 2, 3))

我可以使用

创建一个累积列

dat[,"CulmCount1"]<-cumsum(dat$count)

并认为我可以做同样的事情

dat <- dat %>% group_by(count) %>% mutate(CulmCount2 = cumsum(count))

但是这会在 2015 年之后停止累积计数,并且当我们到达 2023 年时根本没有任何意义。(如果它根本不起作用,我会认为我分组错误,但我不明白为什么它停止累积。)

r cumsum mutate
1个回答
0
投票

直接使用

cumsum
即可,无需分组:

dat <- dat |> mutate(ct = cumsum(count))

assertthat::are_equal(dat$CulmCount1, dat$ct) #TRUE
© www.soinside.com 2019 - 2024. All rights reserved.