Как подсчитать наблюдения по группе в R


Часто вас может заинтересовать подсчет количества наблюдений по группам в R.

К счастью, это легко сделать с помощью функции count() из библиотеки dplyr .

В этом руководстве объясняется несколько примеров того, как использовать эту функцию на практике, используя следующий фрейм данных:

#create data frame
df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'C'),
 position = c('G', 'G', 'F', 'G', 'F', 'F', 'F', 'G', 'G', 'F', 'F', 'F'),
 points = c(4, 13, 7, 8, 15, 15, 17, 9, 21, 22, 25, 31))

#view data frame
df

 team position points
1 A G 4
2 A G 13
3 A F 7
4 B G 8
5 B F 15
6 B F 15
7 B F 17
8 B G 9
9 C G 21
10 C F 22
11 C F 25
12 C F 31

Пример 1: подсчет по одной переменной

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

library(dplyr)

#count total observations by variable 'team'
df %>% count(team)

# A tibble: 3 x 2
 team n

1 A 3
2 B 5
3 C 4

Из вывода мы видим, что:

  • В команде А 3 игрока.
  • В команде Б 5 игроков.
  • Команда C состоит из 4 игроков.

Эта единственная функция count() дает нам хорошее представление о распределении игроков по командам.

Обратите внимание, что мы также можем отсортировать количество, если хотим:

#count total observations by variable 'team'
df %>% count(team, sort= TRUE )

# A tibble: 3 x 2
 team n

1 B 5
2 C 4
3 A 3

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

Мы также можем сортировать более чем по одной переменной:

#count total observations by 'team' and 'position'
df %>% count(team, position)

# A tibble: 6 x 3
 team position n

1 A F 1
2 A G 2
3 B F 3
4 B G 2
5 C F 3
6 C G 1

Из вывода мы видим, что:

  • В команде А есть 1 игрок на позиции «F» (нападающий) и 2 игрока на позиции «G» (охранник).
  • В команде Б 3 игрока на позиции «F» (нападающий) и 2 игрока на позиции «G» (охранник).
  • В команде C 3 игрока на позиции «F» (нападающий) и 1 игрок на позиции «G» (охранник).

Пример 3: Взвешенный счет

Мы также можем «взвесить» количество одной переменной по другой переменной. Например, следующий код показывает, как подсчитать общее количество наблюдений для каждой команды, используя переменную 'points' в качестве веса:

df %>% count(team, wt= points )

# A tibble: 3 x 2
 team n

1 A 24
2 B 64
3 C 99

Вы можете найти полную документацию по функции count() здесь .