我得到的是周 (wk) 的平均值,但是,第 21 周没有全部数据,所以我想 改为按“月”获取平均值。如何将 group_by(wk) 切换为 group_by(month) 相同的 dplyr 调用?第 21 周的最终结果应该是 5.8。
library(dplyr)
fish <- structure(list(wk = c(20, 20, 20, 20, 20, 20, 20, 21, 21, 21,
21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22), month = c(5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6), pd = c(6,
4, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 10,
4, 5, NA, 6)), row.names = c(NA, -21L), class = "data.frame")
fish %>% group_by(wk) %>% summarise(Mean = mean(pd, na.rm=T))
# A tibble: 3 x 2
wk Mean
<dbl> <dbl>
1 20 5
2 21 NaN
3 22 6.25
您不能激活 2 个不同的分组,但您可以执行以下操作:
fish |>
mutate(month_mean = mean(pd, na.rm = TRUE)) |>
group_by(wk) |>
summarise(Mean = coalesce(mean(pd, na.rm=T), first(month_mean)))
# # A tibble: 3 × 2
# wk Mean
# <dbl> <dbl>
# 1 20 5
# 2 21 5.83
# 3 22 6.25