Jak policzyć unikalne wartości według grupy w r (z przykładami)


Możesz użyć następujących metod, aby policzyć liczbę unikalnych wartości na grupę w R:

Metoda 1: Użyj podstawy R

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

Metoda 2: użyj dplyr

 library (dplyr)

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

Metoda 3: Korzystanie z data.table

 library (data.table)

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

Każda metoda zwraca dokładnie ten sam wynik, ale podstawowa metoda R jest zwykle znacznie wolniejsza podczas pracy z dużymi ramkami danych.

Poniższe przykłady pokazują, jak w praktyce zastosować każdą z tych metod z następującą ramką danych:

 #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

Metoda 1: Policz unikalne wartości według grupy za pomocą Base R

Poniższy kod pokazuje, jak policzyć liczbę odrębnych wartości punktowych dla każdej drużyny przy użyciu podstawy 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

Z wyniku możemy zobaczyć:

  • Istnieją 2 unikalne wartości punktowe dla Drużyny A.
  • Istnieją 2 unikalne wartości punktowe dla Drużyny B.
  • Drużyna C ma 1 unikalną wartość punktową.

Metoda 2: Policz unikalne wartości według grupy za pomocą dplyr

Poniższy kod pokazuje, jak policzyć liczbę odrębnych wartości punktowych dla każdej drużyny za pomocą 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

Należy zauważyć, że wyniki te odpowiadają wynikom podstawowej metody R.

Metoda 3: Policz unikalne wartości według grupy za pomocą data.table

Poniższy kod pokazuje, jak policzyć liczbę odrębnych wartości punktowych dla każdego zespołu za pomocą 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

Należy zauważyć, że wyniki te odpowiadają wynikom dwóch poprzednich metod.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje za pomocą dplyr:

Jak przekodować wartości za pomocą dplyr
Jak zamienić NA na Zero w dplyr
Jak sortować zmienne według grup za pomocą dplyr
Jak wybrać pierwszy wiersz według grupy za pomocą dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *