#r #group-by #dplyr #summarize
#r #группировка по #dplyr #суммировать
Вопрос:
Я сгенерировал данные следующим образом:
Group Detail Value Count Count_Avg
A P 1.25 2 0.63
A K 0.5 1 0.50
A Y 0.25 1 0.25
B D 0.75 2 0.38
B G 33.5 18 1.86
B Q 17.5 18 0.97
Полный набор данных для приведенного ниже кода содержит, например: 2 экземпляра детали «P» в группе «A» с суммой переменной, называемой Time (не показано, время для P1 = 0,75, время для P2 = 0,50), равной 1,25 для значения и в среднем 0,63 дляCount_Avg. В группе «B» имеется 18 экземпляров детали «G» с суммой 33,5 для значения и средним значением 1,86 для Count_Avg и так далее.
Это код, который я использую для создания приведенной выше таблицы.
data %>%
group_by(Group,
Detail) %>%
summarise(Value = sum(Time),
n = n(),
Count_Avg = Value/n)
Я хочу добавить еще один столбец, который представляет собой процент группы для каждой детали. В качестве примера:
Общее значение для всех деталей в группе «A» = 1.25 0.5 0.25 = 2.0, и процент Детализации «P» в группе «A» = 1,25/2,0 = 0,625. Результирующая таблица будет выглядеть следующим образом:
Group Detail Value Count Count_Avg Detail_Pcnt
A P 1.25 2 0.63 0.625
A K 0.5 1 0.50 0.250
A Y 0.25 1 0.25 0.125
B D 0.75 1 0.75 0.014
B G 33.5 18 1.86 0.647
B Q 17.5 18 0.97 0.338
Спасибо за помощь.
Комментарии:
1. Ваш код вообще не связан с вашими данными
2. Я уже исправил ваше форматирование, я собираюсь откатить ваши изменения обратно, хорошо?
3. Я предполагаю, что вы хотите добавить
%>% mutate(perc = Value / sum(Value))
в конец своей цепочки каналов.4. Большое спасибо Аксману, оба исправили форматирование (что я тоже сделал), но, что более важно, ответ; это сработало отлично. Всегда самое очевидное, что труднее всего увидеть.
5. @cuttlefish44,
mutate
само по себе уже учитывает группировку при вычисленииsum
, и должно быть быстрее, чем использованиеdo
.