R 中 20 年、10 年和 5 年的平均利率

Average rate for 20 years, 10 years, and 5 years in R

我试图通过另一个变量“管辖”找到某种病毒在 2002-2021、2002-2012 和 2002-2007 之间的平均速率。我现在的代码是:

avgrate20 <- ratesmerge %>%
  group_by(Jurisdiction) %>%
  summarize(
    Years = paste(range(2002:2021), collapse = "-"),
    across(starts_with("rate"), mean)
  )

当我把Years = paste(range(2002:2021), collapse = "-")改成2002-2012的时候,还是取2002-2021的平均值。

这是我执行 head(df) 时的输出

如有任何帮助,我们将不胜感激

Years = paste(range(yrs_wanted), collapse = "-") 只是创建一个名为 Years 的列,其中包含字符向量 "2002-2021"——这不会告诉 R 任何有关在计算平均值时要包括哪些行的信息。为此,您需要 dplyr::filter().

library(dplyr)

yrs_wanted <- 2002:2021

avgrate20 <- ratesmerge %>%
  filter(MMWR_YEAR %in% yrs_wanted) %>%
  group_by(Jurisdiction) %>%
  summarize(
    Years = paste(range(yrs_wanted), collapse = "-"),
    across(starts_with("rate"), mean)
  )

如果你想花哨一些,你可以使用 purrr::map_dfr():

遍历你的年份范围
library(dplyr)
library(purrr)

year_ranges <- list(
  2002:2021,
  2002:2012,
  2002:2007
)

avgrates <- map_dfr(
  year_ranges,
  ~ ratesmerge %>%
  filter(MMWR_YEAR %in% .x) %>%
  group_by(Jurisdiction) %>%
  summarize(
    Years = paste(range(.x), collapse = "-"),
    across(starts_with("rate"), mean)
  )
)