我正在尝试计算一段时间内的累积总和。有没有办法在一步内计算这个?有什么套餐推荐吗?
activate_2019 <- activate_rate %>%
filter(
grepl("2019", join_day)
) %>%
summarize(
proportion = sum(if_activate) /n()
)
activate_2020 <- activate_rate %>%
filter(
grepl("2019|2020", join_day)
) %>%
summarize(
proportion = sum(if_activate) /n()
)
activate_2021 <- activate_rate %>%
filter(
grepl("2019|2020|2021", join_day)
) %>%
summarize(
proportion = sum(if_activate) /n()
)
最佳答案
这是一种使用 tidyverse
的方法
- 从“join_day”列中提取
唯一
year` - 循环这些,根据“join_day”中循环的“年份”的匹配对
active_rate
中的行进行切片
- 通过取“if_activate”的
平均值
进行总结 - 使用
_dfc
绑定(bind)输出,即map
中的列绑定(bind)
library(stringr)
library(dplyr)
library(purrr)
un1 <- str_extract_all(activate_rate$join_day, "\\d{4}") %>%
unlist %>%
unique %>%
as.integer %>%
sort
map_dfc(un1, ~ activate_rate %>%
arrange(as.Date(join_day)) %>%
slice(seq(max(grep(as.character(.x), join_day)))) %>%
sumarise(!!str_c("proportion", .x) := mean(if_activate)))
关于r - 使用 dplyr 计算时间戳上的累积和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68040015/