我知道这一定很容易,但是我很难找到正确的dplyr命令来执行此操作。假设我要按两个变量对数据集进行分组,然后汇总每一行的计数。为此,我们只需:

mtcars %>% group_by(cyl, mpg) %>% summarize(Count = n())

这将为cylmpgCount这三个变量生成一个具有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/

10-12 17:48