我有这样的数据:
category <- c("A", "B", "C", "B", "B", "B", "C")
mean <- c(5,4,5,4,3,1,5)
counts <- c(5, 200, 300, 150, 400, 200,250)
df <- data.frame(category, mean, counts)
category
是某种因素,mean
是已计算的平均值。 mean
是通过不同形式的比例(1-5)和counts
的数量来计算的。我只计算了mean
s,而不是计算出的单个值。
目标是在不同的mean
上汇总不同的category
。像这样:
library(dplyr)
df %>% group_by(category) %>%
summarise(weighted.mean(mean, counts))
A 5.000000
B 2.947368
C 5.000000
问题在于,从counts
(550)等较高C
到A
(5)之类的较低计数获得平均值更有价值(在我的情况下)。任何想法如何考虑到这一点?
我的解决方案就是这个。但我不知道它是否有效:
df %>% mutate(y = mean * counts) %>%
mutate(category = as.factor(category)) %>%
group_by(category) %>%
summarise(X = sum(y)) %>%
arrange(desc(X))
B 2800
C 2750
A 25