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)
)
)
我试图通过另一个变量“管辖”找到某种病毒在 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)
)
)