library(dplyr)
yr_wt = list("2022" = c(.4, .6), "2023" = c(.7, .3), "2024" = c(.5, .5))
df |>
rowwise() |>
mutate(mean_wt = weighted.mean(c_across(col_1:col_2), yr_wt[[as.character(yr)]])) |>
ungroup()
rowwise()
即使在中等大小的数据帧上也可能是非常缓慢的操作。这里有一个更快的选择,仍然使用
yr_wt
查找列表:
df |>
mutate(mean_wt = rowSums(as.matrix(pick(col_1:col_2)) %*% diag(yr_wt[[as.character(pull(cur_group()))]])),
.by = yr)