Как рассчитать относительные частоты с помощью 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 можно найти здесь .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *