Часто вам может понадобиться вычислить относительную частоту/пропорции значений в одном или нескольких столбцах фрейма данных в 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 здесь .