Как рассчитать относительные частоты с помощью dplyr
Часто вам может потребоваться вычислить относительные частоты/пропорции значений в одном или нескольких столбцах фрейма данных в R.
К счастью, это легко сделать с помощью функций пакета dplyr . В этом руководстве показано, как использовать эти функции для расчета относительных частот в следующем фрейме данных:
#create data frame df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'), position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'), points = c(12, 15, 19, 22, 32, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 32 6 BG 34 7 BF 39
Пример 1: Относительная частота переменной
Следующий код показывает, как вычислить относительную частоту каждой команды в кадре данных:
library(dplyr) df %>% group_by (team) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 2 x 3 team n freq 1 to 3 0.429 2 B 4 0.571
Это говорит нам о том, что на команду A приходится 42,9% всех строк во фрейме данных, а на команду B — оставшиеся 57,1% строк. Обратите внимание, что вместе они в сумме составляют 100%.
Связанный: Полное руководство: Как группировать и суммировать данные в R
Пример 2: Относительная частота нескольких переменных
Следующий код показывает, как вычислить относительную частоту позиций на команду:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 0.667 2 AG 1 0.333 3 BF 1 0.250 4 BG 3 0.750
Это говорит нам о том, что:
- 66,7% игроков команды А находятся на позиции F.
- 33,3% игроков команды А находятся на позиции G.
- 25,0% игроков команды А находятся на позиции F.
- 75,0% игроков команды Б находятся на позиции G.
Связанный: Как использовать Mutate для создания новых переменных в R
Пример 3. Отображение относительных частот в процентах.
Следующий код показывает, как рассчитать относительную частоту позиций по командам и как отобразить эти относительные частоты в процентах:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = paste0(round(100 * n/sum(n), 0), ' % ')) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 67% 2 GA 1 33% 3 BF 1 25% 4 BG 3 75%
Дополнительные руководства по R можно найти здесь .