我知道这一定很容易,但是我很难找到正确的dplyr命令来执行此操作。假设我要按两个变量对数据集进行分组,然后汇总每一行的计数。为此,我们只需:
mtcars %>% group_by(cyl, mpg) %>% summarize(Count = n())
这将为
cyl
,mpg
和Count
这三个变量生成一个具有27行的数据帧。接下来,我想总结三个mpg
值中每个值的平均cyl
。请记住,每行可能包含的Count
大于在计算平均值时必须考虑的cyl
。我的数据框应具有3行,其中包含2个变量Avg_mpg
和ojit_code。有人可以给我做这个的短代码卡盘吗?先感谢您。
最佳答案
如果我对您的理解正确,则需要weighted.mean
library(dplyr)
mtcars %>%
group_by(cyl, mpg) %>%
summarize(Count = n()) %>%
group_by(cyl) %>%
summarise(avg_mpg = weighted.mean(mpg, Count))
# A tibble: 3 x 2
# cyl avg_mpg
# <dbl> <dbl>
#1 4.00 26.7
#2 6.00 19.7
#3 8.00 15.1
相当于
mtcars %>%
group_by(cyl, mpg) %>%
summarize(Count = n()) %>%
group_by(cyl) %>%
summarise(avg_mpg = sum(mpg * Count)/sum(Count))
关于r - 如何使用dplyr计算两个分组变量的加权平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49992049/