【问题标题】:How to make a new dataframe with aggregated column values in R that is grouped by another column如何在 R 中使用由另一列分组的聚合列值创建一个新数据框
【发布时间】:2018-03-21 03:19:18
【问题描述】:

我之前使用 dplyr 成功添加了聚合列,但我不确定如何创建一个新的宽数据框,该数据框包含基于另一列 (SkillGroup) 的值的新聚合列 (平均值) 并按另一列 (EmployeeID)。

我原来的 DF 是这样的:

EmployeeID <- c(rep(1,5), rep(2,3))
SkillGroup <- c(rep("A",3), rep("B",2), "A", "B", "C")
Proficiency <- c(1,2,3,4,5,1,2,3)
mydata <- data.frame(EmployeeID, SkillGroup, Proficiency)

我感兴趣的最终数据框如下所示:

EmployeeID2 <- c(1,2)
MeanSkillA <- c(2,1)
MeanSkillB <- c(4.5,2)
MeanSkillC <- c(NA, 3)
desiredDF <- data.frame(EmployeeID2, MeanSkillA, MeanSkillB, MeanSkillC)

【问题讨论】:

    标签: r group-by aggregate dplyr


    【解决方案1】:

    聚合值然后tidyr::spread:

    mydata %>% 
        group_by(EmployeeID, SkillGroup = paste('MeanSkill', SkillGroup, sep="")) %>% 
        summarise(MeanSkill = mean(Proficiency)) %>% 
        spread(SkillGroup, MeanSkill)
    
    # A tibble: 2 x 4
    # Groups:   EmployeeID [2]
    #  EmployeeID MeanSkillA MeanSkillB MeanSkillC
    #*      <dbl>      <dbl>      <dbl>      <dbl>
    #1          1          2        4.5         NA
    #2          2          1        2.0          3
    

    【讨论】:

      猜你喜欢
      • 2022-07-04
      • 1970-01-01
      • 2022-11-08
      • 2019-08-12
      • 2021-07-24
      • 1970-01-01
      • 2019-08-18
      • 2019-05-13
      • 2020-03-22
      相关资源
      最近更新 更多