我正在尝试使用
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 年时根本没有任何意义。(如果它根本不起作用,我会认为我分组错误,但我不明白为什么它停止累积。)
直接使用
cumsum
即可,无需分组:
dat <- dat |> mutate(ct = cumsum(count))
assertthat::are_equal(dat$CulmCount1, dat$ct) #TRUE