【问题标题】:Finding the mean of two columns with two different classes/labels查找具有两个不同类/标签的两列的平均值
【发布时间】:2020-10-28 20:46:29
【问题描述】:

现在我正在尝试创建一个数据框,其中包含两个单独标签/类别的两列的平均值。

但是,我不知道如何计算两列的平均值,它只是为赢家和对手/输家返回相同的平均值。

目前,我正在使用 tidyverse 库。

这是原始数据框:

winner_hand winner_ht   winner_ioc  winner_age  opponent_hand   opponent_ht opponent_ioc    opponent_age    result  name
<chr>   <dbl>   <chr>   <dbl>   <chr>   <dbl>   <chr>   <dbl>   <fct>   <chr>
R   178 JPN 29.00479    R   NA  RUS 22.88569    winner  Kei Nishikori
R   NA  RUS 22.88569    R   188 FRA 33.70568    winner  Daniil Medvedev
R   178 JPN 29.00479    R   188 FRA 31.88227    winner  Kei Nishikori
R   188 FRA 33.70568    R   NA  AUS 19.86858    winner  Jo Wilfried Tsonga
R   NA  RUS 22.88569    R   196 CAN 28.01095    winner  Daniil Medvedev
R   188 FRA 31.88227    R   NA  JPN 26.40383    winner  Jeremy Chardy

我的代码:

age_summary <- game_data %>%
                group_by(result) %>%
                summarize(mean_age = mean(winner_age))
age_summary

结果数据框:

result  mean_age
<fct>   <dbl>
winner  27.68495
loser   27.68495

【问题讨论】:

    标签: r tidyverse


    【解决方案1】:

    如果您需要两列的摘要,则需要在对 summarize() 的调用中为每一列提供表达式。

    以假数据为例,因为您的摘录只有一个“结果”列的值:

    library(tidyverse)
    dat <- read_csv(
    "result, winner_age, opponent_age
    A, 5, 10
    A, 6, 11,
    B, 12, 2
    B, 13, 1")
    
    dat %>%
      group_by(result) %>%
      # note: two expressions here:
      summarise(mean_winner_age = mean(winner_age),
                mean_opponent_age = mean(opponent_age))
    

    输出:

    # A tibble: 2 x 3
      result mean_winner_age mean_opponent_age
      <chr>            <dbl>             <dbl>
    1 A                  5.5              10.5
    2 B                 12.5               1.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2013-01-25
      • 2012-11-09
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多