Как создать новый фрейм данных с агрегированными значениями столбца в R, который сгруппирован по другому столбцу

Раньше я использовал dplyr для успешного добавления агрегированного столбца, но я не уверен, как создать новый широкий фрейм данных, содержащий новые агрегированные столбцы (средние значения) на основе значений другого столбца (SkillGroup) и сгруппированных по другому столбцу ( идентификатор сотрудника).

Мой оригинальный 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)

person Kevin Sun    schedule 09.10.2017    source источник


Ответы (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
person Psidom    schedule 09.10.2017