Как рассчитать относительные частоты с помощью 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 A G 12
2 A F 15
3 A F 19
4 B G 22
5 B G 32
6 B G 34
7 B F 39

Пример 1: относительная частота одной переменной

В следующем коде показано, как рассчитать относительную частоту каждой команды во фрейме данных:

library(dplyr)

df %>%
 group_by(team) %>%
 summarise (n = n()) %>%
 mutate (freq = n / sum(n))

# A tibble: 2 x 3
 team n freq

1 A 3 0.429
2 B 4 0.571

Это говорит нам о том, что на команду А приходится 42,9% всех строк во фрейме данных, а на команду Б — оставшиеся 57,1% строк. Обратите внимание, что вместе они составляют 100%.

Связанный: Полное руководство: как группировать и суммировать данные в R

Пример 2: относительная частота нескольких переменных

Следующий код показывает, как рассчитать относительную частоту позиций по командам:

library(dplyr)

df %>%
 group_by(team, position) %>%
 summarise (n = n()) %>%
 mutate (freq = n / sum(n))

# A tibble: 4 x 4
# Groups: team [2]
 team position n freq

1 A F 2 0.667
2 A G 1 0.333
3 B F 1 0.250
4 B G 3 0.750

Это говорит нам о том, что:

  • 66,7% игроков команды А находятся на позиции F.
  • 33,3% игроков команды А находятся на позиции G.
  • 25,0% игроков команды А находятся на позиции F.
  • 75,0% игроков команды B находятся на позиции G.

Связанный: Как использовать мутацию для создания новых переменных в R

Пример 3. Отображение относительных частот в процентах

Следующий код показывает, как рассчитать относительную частоту позиций по командам и как отобразить эти относительные частоты в процентах:

library(dplyr)

df %>%
 group_by(team, position) %>%
 summarise (n = n()) %>%
 mutate (freq = paste0(round(100 \* n/sum(n), 0), '%'))

# A tibble: 4 x 4
# Groups: team [2]
 team position n freq 

1 A F 2 67% 
2 A G 1 33% 
3 B F 1 25% 
4 B G 3 75%

Вы можете найти больше руководств по R здесь .

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.