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

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