【发布时间】:2020-10-29 16:24:19
【问题描述】:
我有一个数据框 (“df”),其中包含我想估计的加权平均值、人口加权 (df$Population) 和通勤区分组 (df$cz) 的列数。
这是我想估计的加权平均值的列列表:
vlist = c("Public_Welf_Total_Exp", "Welf_Cash_Total_Exp", "Welf_Cash_Cash_Assist", "Welf_Ins_Total_Exp","Total_Educ_Direct_Exp", "Higher_Ed_Total_Exp", "Welf_NEC_Cap_Outlay","Welf_NEC_Direct_Expend", "Welf_NEC_Total_Expend", "Total_Educ_Assist___Sub", "Health_Total_Expend", "Total_Hospital_Total_Exp", "Welf_Vend_Pmts_Medical","Hosp_Other_Total_Exp","Unemp_Comp_Total_Exp", "Unemp_Comp_Cash___Sec", "Total_Unemp_Rev", "Hous___Com_Total_Exp", "Hous___Com_Construct")
这是我一直在使用的代码:
df = df %>% group_by(cz) %>% mutate_at(vlist, weighted.mean(., df$Population))
我也试过了:
df = df %>% group_by(cz) %>% mutate_at(vlist, function(x) weighted.mean(x, df$Population))
以及仅在 2 列上测试了以下代码:
df = df %>% group_by(cz) %>% mutate_at(vars(Public_Welf_Total_Exp, Welf_Cash_Total_Exp), weighted.mean(., df$Population))
但是,即使我的任何变量中都没有 NA,我尝试过的所有操作都会出现以下错误:
Error in weighted.mean.default(., df$Population) :
'x' and 'w' must have the same length
我知道我可以使用 lapply 进行以下估计,但我不知道如何使用 lapply 按另一个变量进行分组。如有任何建议,我将不胜感激!
【问题讨论】:
-
尝试在您的
weighted.mean通话中去掉Population前面的df$。 -
当我尝试这样做时,我收到以下错误:“weighted.mean.default(., Population) 中的错误:找不到对象'Population'”
标签: r dplyr weighted-average