Как подсчитать различные значения с помощью dplyr (с примерами)


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

Метод 1: подсчет различных значений в одном столбце

n_distinct(df$column_name)

Метод 2: подсчет различных значений во всех столбцах

sapply(df, function (x) n_distinct(x))

Метод 3: подсчет различных значений по группам

df %>%
 **group_by(grouping_column) %>%
 **summarize(count_distinct = n_distinct(values_column))

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

library(dplyr)

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
 points=c(6, 6, 8, 10, 9, 9, 12, 12),
 assists=c(3, 6, 4, 2, 4, 5, 5, 9))

#view data frame
df

 team points assists
1 A 6 3
2 A 6 6
3 A 8 4
4 A 10 2
5 B 9 4
6 B 9 5
7 B 12 5
8 B 12 9

Метод 1: подсчет различных значений в одном столбце

В следующем коде показано, как использовать n_distinct() для подсчета количества уникальных значений в столбце «команда»:

#count distinct values in 'team' column
n_distinct(df$team)

[1] 2

В столбце «команда» есть 2 различных значения.

Метод 2: подсчет различных значений во всех столбцах

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

#count distinct values in every column
sapply(df, function (x) n_distinct(x))

 team points assists 
 2 5 6

Из вывода мы видим:

  • В столбце «команда» есть 2 разных значения.
  • В столбце «баллы» есть 5 различных значений.
  • В столбце «помощь» есть 6 различных значений.

Метод 3: подсчет различных значений по группам

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

#count distinct 'points' values by 'team'
df %>%
 group_by(team) %>%
 summarize(distinct_points = n_distinct(points))

# A tibble: 2 x 2
 team distinct_points 
1 A 3
2 B 2

Из вывода мы видим:

  • Для команды А существует 3 различных значения очков.
  • Есть 2 различных значения очков для команды B.

Дополнительные ресурсы

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

Как перекодировать значения с помощью dplyr
Как заменить NA на ноль в dplyr
Как ранжировать переменные по группам с помощью dplyr
Как выбрать первую строку по группе с помощью dplyr