我有一个包含三个变量的数据框,如下所示:
variable <- c("A", "B", "C", "B", "B", "A", "C")
mean <- c(2,4,5,4,3,1,5)
counts <- c(100, 200, 300, 150, 400, 200,250)
df <- data.frame(variable, mean, counts)
我想将mean
乘以counts
的数量,并按variable
添加它们。然后我想将结果除以counts
每variable
的数量。对于variable A
:
(2 * 100 + 1 * 200)/ 300 = 1.333333
然后我想按照variable
中的group_by
和summarise
功能,按dplyr
汇总结果。任何想法如何运作?我尝试使用group_by和mutate
,但没有聚合。结果应如下所示:
Variable Mean
A some value
B some value
C some value
答案 0 :(得分:3)
这样可以工作 - 您只需要指定计算,因为对mean
的调用当然会除以计数(例如,第一个调用为2)
库(tidyverse)
df %>%
mutate(multiple = mean * counts) %>%
group_by(variable) %>%
summarise(mean = sum(multiple) / sum(counts))
答案 1 :(得分:2)
library(plyr)
ddply(.data = df,.variables = c('variable'),
function(x){sum(x$mean*x$counts)/sum(x$counts)})