首页 文章

如何将特定组平均值与每个单独组进行比较?

提问于
浏览
0

我有一个大型数据集,我正在尝试对数据进行分组 . 我正在尝试使用dplyr和mutate创建一个新列,这是每个组的平均值 . 然后我想看看这些方法与仅一个类别的平均值之间的区别 .

此问题可能与mtcars数据集有关 . 如何通过“cyl”和“gear”对mtcars数据进行分组,然后为每个组取“mpg”的平均值 . 然后我想看看每组的“mpg”的平均值与特别是所有“齿轮”= = 5的车的差异,但是有变量“cyl” .

如果我像其他人一样问同样的问题,我很抱歉,但我一直无法找到这个具体的问题 .

df <- mtcars
df2 <- df %>% group_by(cyl, gear) %>% mutate(mean_mpg = mean(mpg))

3 回答

  • 0
    df2 <- df %>%
      group_by(cyl, gear) %>%
      summarise(mean_mpg = mean(mpg)) %>%
      mutate(comparison_mpg = mean_mpg[which(gear == 5)],
             mpg_diff = mean_mpg - comparison_mpg)
    

    结果

    # A tibble: 8 x 5
    # Groups:   cyl [3]
        cyl  gear mean_mpg comparison_mpg mpg_diff
      <dbl> <dbl>    <dbl>          <dbl>    <dbl>
    1    4.    3.     21.5           28.2  -6.70  
    2    4.    4.     26.9           28.2  -1.27  
    3    4.    5.     28.2           28.2   0.    
    4    6.    3.     19.8           19.7   0.0500
    5    6.    4.     19.8           19.7   0.0500
    6    6.    5.     19.7           19.7   0.    
    7    8.    3.     15.0           15.4  -0.350 
    8    8.    5.     15.4           15.4   0.
    
  • 1

    这是相当蛮力但它应该给你你想要的 . 我得到 cylgear 的平均 mpg 然后只是 cyl 忽略齿轮然后 mpg 忽略 cyl .

    mtcars %>%  
      group_by(cyl,gear) %>% 
      mutate(mean_mpg_both = mean(mpg)) %>% 
      ungroup %>% 
      group_by(gear) %>% 
      mutate(mean_gear_mpg = mean(mpg)) %>% 
      ungroup %>% 
      group_by(cyl) %>% 
      mutate(mean_cyl_mpg = mean(mpg)) %>% 
      select(mpg,cyl,gear,mean_mpg_both,mean_gear_mpg, mean_cyl_mpg) %>% 
      group_by(cyl,gear) %>% 
      filter(row_number()==1)
    
  • 0

    根据你的评论,我认为这就是你所追求的:

    mtcars %>% group_by(cyl) %>%
        summarize(mean_by_cyl = mean(mpg),
                  mean_gear5_by_cyl = mean(mpg[gear == 5]),
                  mean_diff_from_gear5 = mean_by_cyl - mean_gear5_by_cyl)
    # # A tibble: 3 x 4
    #     cyl mean_by_cyl mean_gear5_by_cyl mean_diff_from_gear5
    #   <dbl>       <dbl>             <dbl>                <dbl>
    # 1     4    26.66364              28.2          -1.53636364
    # 2     6    19.74286              19.7           0.04285714
    # 3     8    15.10000              15.4          -0.30000000
    

相关问题