【发布时间】:2016-11-25 08:03:37
【问题描述】:
关于命令by 和weighted.mean 的问题已经存在,但没有一个能够帮助解决我的问题。我是 R 新手,我更习惯于数据挖掘语言而不是编程。
我有一个数据框,其中包含每个人(观察/行)的收入、教育水平和样本权重。我想按教育水平计算收入的加权平均值,并且我希望将结果与原始数据框的新列中的每个人相关联,如下所示:
obs income education weight incomegroup
1. 1000 A 10 --> display weighted mean of income for education level A
2. 2000 B 1 --> display weighted mean of income for education level B
3. 1500 B 5 --> display weighted mean of income for education level B
4. 2000 A 2 --> display weighted mean of income for education level A
我试过了:
data$incomegroup=by(data$education, function(x) weighted.mean(data$income, data$weight))
它不起作用。加权平均值以某种方式计算并出现在“收入组”列中,但对于整个集合而不是按组或仅针对一个组,我不知道。我阅读了有关包裹 plyr 或 aggregate 的内容,但它似乎没有做我感兴趣的事情。
ave{stats} 命令给出了我正在寻找的东西,但只是简单的意思:
data$incomegroup=ave(data$income,data$education,FUN = mean)
它不能与权重一起使用。
提前感谢您的帮助!
【问题讨论】:
标签: r weighted-average