Вы можете использовать следующий синтаксис для вычисления процента по группе в R:
library(dplyr)
df %>%
group_by(group_var) %>%
mutate(percent = value_var/sum(value_var))
В следующем примере показано, как использовать этот синтаксис на практике.
Пример: вычислить процент по группе в R
Предположим, у нас есть следующий фрейм данных, который показывает очки, набранные баскетболистами в разных командах:
#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
points=c(12, 29, 34, 14, 10, 11, 7, 36, 34, 22))
#view data frame
df
team points
1 A 12
2 A 29
3 A 34
4 A 14
5 A 10
6 B 11
7 B 7
8 B 36
9 B 34
10 B 22
Мы можем использовать следующий код, чтобы создать новый столбец во фрейме данных, который показывает процент от общего количества набранных очков, сгруппированных по командам:
library(dplyr)
#calculate percentage of points scored, grouped by team
df %>%
group_by(team) %>%
mutate(percent = points/sum(points))
# A tibble: 10 x 3
# Groups: team [2]
team points percent
1 A 12 0.121
2 A 29 0.293
3 A 34 0.343
4 A 14 0.141
5 A 10 0.101
6 B 11 0.1
7 B 7 0.0636
8 B 36 0.327
9 B 34 0.309
10 B 22 0.2
Столбец процентов показывает процент от общего количества очков, набранных этим игроком в своей команде.
Например, игроки команды А набрали в сумме 99 очков.
Таким образом, игрок в первой строке фрейма данных, набравший 12 очков, набрал в сумме 12/99 = 12,12% от общего количества очков команды А.
Точно так же игрок во второй строке фрейма данных, набравший 29 очков, набрал в сумме 29/99 = 29,29% от общего количества очков для команды А.
И так далее.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:
Как подсчитать уникальные значения по группе в R
Как рассчитать сводную статистику по группам в R
Как рассчитать сумму по группе в R