Как суммировать дочернюю группу путем суммирования родительской группы с использованием dplyr в r

#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 .