【发布时间】:2020-07-09 11:18:11
【问题描述】:
很抱歉问了一个非常基本的问题,但我陷入了一个难题,似乎无法摆脱。
我的代码看起来像
Medicine Biology Business sex weights
0 1 0 1 0.5
0 0 1 0 1
1 0 0 1 05
0 1 0 0 0.33
0 0 1 0 0.33
1 0 0 1 1
0 1 0 0 0.33
0 0 1 1 1
1 0 0 1 1
前三个是研究领域,第四个变量与性别有关。显然还有更多的观察。 我想要得到的是研究领域(医学、生物学、商业)的平均水平,由可变的性别(因此男性的平均值和女性的平均值)。为此,我使用了以下代码:
barplot_sex<-aggregate(x=df_dummies[,1:19] , by=list(df$sex),
FUN= function(x) mean(x)
效果很好,给了我我需要的东西。我的问题是我现在需要使用加权平均值,但我不能使用
FUN= function(x) weighted.mean(x, weights)
因为观察比研究领域多得多。
我设法做的唯一选择是编辑(箱线图)并手动更改值,但随后 R 不保存更改。另外,我确信一定有一种简单的方法可以完全满足我的需要。
任何帮助将不胜感激。
最好的, 加布里埃尔
【问题讨论】:
-
您想使用什么重量?你的预期结果是什么?附带说明一下,您可以将当前函数缩短为
aggregate(df_dummies, list(df$sex), mean)或aggregate(.~sex, df_dummies, mean),结果相同 -
权重用于重复观察,非整数也是如此,因为有些学生研究的不仅仅是一个领域。预期的结果将与我现在得到的类似,只是使用加权平均值而不是简单平均值。感谢您提供有关如何缩短代码 btw 的信息
标签: r aggregate weighted-average