Як підрахувати унікальні значення за групою в r (з прикладами)


Ви можете використовувати такі методи, щоб підрахувати кількість унікальних значень на групу в R:

Спосіб 1: Використовуйте Base R

 results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))

Спосіб 2: використовуйте dplyr

 library (dplyr)

results <- df %>%
  group_by(group_var) %>%
  summarize(count = n_distinct (values_var))

Спосіб 3: Використання data.table

 library (data.table)

df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]

Кожен метод повертає точно той самий результат, але базовий метод R, як правило, значно повільніший при роботі з великими кадрами даних.

У наведених нижче прикладах показано, як використовувати кожен із цих методів на практиці з таким кадром даних:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 10, 14, 14, 18, 19, 20, 20, 20))

#view data frame
df

  team points
1 to 10
2 to 10
3 to 14
4 to 14
5 B 18
6 B 19
7 C 20
8 C 20
9 C 20

Спосіб 1: підрахунок унікальних значень за групою за допомогою Base R

Наступний код показує, як підрахувати кількість різних значень очок для кожної команди за допомогою бази R:

 #count unique points values by team
results <- aggregate(data=df, points~team, function (x) length ( unique (x)))

#view results
results

  team points
1 TO 2
2 B 2
3 C 1

З результату ми бачимо:

  • Є 2 унікальних значення балів для команди A.
  • Є 2 унікальних значення очок для команди B.
  • Є 1 унікальне значення бала для команди C.

Спосіб 2: Підрахуйте унікальні значення за групою за допомогою dplyr

Наступний код показує, як підрахувати кількість різних значень очок для кожної команди за допомогою dplyr:

 library (dplyr)

#count unique points values by team
results <- df %>%
  group_by(team) %>%
  summarize(count = n_distinct (points))

#view results
results

# A tibble: 3 x 2
  team count
1 TO 2
2 B 2
3 C 1

Зауважте, що ці результати збігаються з результатами базового методу R.

Спосіб 3: Підрахуйте унікальні значення за групою за допомогою data.table

Наступний код показує, як підрахувати кількість окремих значень балів для кожної команди за допомогою data.table:

 library (data.table)

#convert data frame to data table
df <- data.table(df)

#count unique points values by team 
results <- df[, .(count = length ( unique (points))), by = team]

#view results
results

   team count
1 TO 2
2:B2
3: C 1

Зауважте, що ці результати збігаються з результатами попередніх двох методів.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції за допомогою dplyr:

Як перекодувати значення за допомогою dplyr
Як замінити NA на Zero в dplyr
Як сортувати змінні за групою за допомогою dplyr
Як вибрати перший рядок групою за допомогою dplyr

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *