【发布时间】:2018-04-15 06:07:08
【问题描述】:
从我之前的(已回答)question 继续。
假设我有这些数据,
> df
rank1 rank2 rank3 rank4 rank5
1 A B C D E
2 A C B D E
3 C A B E D
4 B A C D E
5 A B D C E
我设法创建了一个按项目排名的频率表(感谢akrun),
> df.frequency
ranking
items 1 2 3 4 5
A 3 2 0 0 0
B 1 2 2 0 0
C 1 1 2 1 0
D 0 0 1 3 1
E 0 0 0 1 4
> str(df.frequency)
'table' int [1:5, 1:5] 3 1 1 0 0 2 2 1 0 0 ...
- attr(*, "dimnames")=List of 2
..$ items : chr [1:5] "A" "B" "C" "D" ...
..$ ranking: chr [1:5] "1" "2" "3" "4" ...
在 Excel 中,我使用 =SUMPRODUCT($B$1:$F$1,B2:F2)/SUM(B2:F2) 来获得加权平均值,
1 2 3 4 5 Mean
A 3 2 0 0 0 1.4
B 1 2 2 0 0 2.2
C 1 1 2 1 0 2.6
D 0 0 1 3 1 4
E 0 0 0 1 4 4.8
在 R 中,如何计算权重为排名的每个项目的加权平均值?我也想计算 SD 和中位数。
【问题讨论】:
-
我在 excel 中试过你的公式,除了第一个之外,它给了我不同的值
-
r <- as.numeric(colnames(df.frequency))然后使用wtd.mean
标签: r median weighted-average