У меня есть большой фрейм данных, содержащий данные о производительности для нескольких человек в течение определенного периода времени. Вместо того, чтобы каждый человек выполнял каждое отдельное выступление, я хочу иметь фрейм данных, содержащий итоговые / средние значения каждого отдельного человека. Вот примерный кадр данных:
name<-c("dwayne", "alf", "christine", "katerina", "dwayne", "christine")
team<- c("halifax", "hamilton", "calgary", "winnipeg", "halifax", "calgary")
pos<- c("left", "middle", "middle", "right", "left", "middle")
amt1<- c(4, 2, 5, 8, 5, 7)
amt2 <- c(12, 14, 13, 18, 17, 18)
perc1<- c(.55, .24, .67, .45, .34, .54)
perc2<- c(.12, .14, .16, .04, .02, .13)
df<-data_frame(team, pos, name, amt1, amt2, perc1, perc2)
До сих пор я выяснил, как использовать group_by и sumrize_if для достижения этой цели с помощью числовых столбцов, например:
tot<-df %>%
group_by(name) %>%
summarise_at(vars(amt1:amt2), sum)
av <- df %>%
group_by(name) %>%
summarise_at(vars(perc1:perc2), mean)
bnd<-cbind(tot, av)
bnd <- bnd[, !duplicated(colnames(bnd))]
Однако моя проблема заключается в следующем: этот метод возвращает фрейм данных, который не содержит столбцы «pos» или «team». Это ключевые элементы информации при анализе этих данных, но не числовые, поэтому они отбрасываются при использовании суммирования функция. Как я могу вернуть фрейм данных "bnd", сохраняя эти факторные векторы?