Hoe u unieke waarden per groep in r kunt tellen (met voorbeelden)


Je kunt de volgende methoden gebruiken om het aantal unieke waarden per groep in R te tellen:

Methode 1: Gebruik Base R

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

Methode 2: gebruik dplyr

 library (dplyr)

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

Methode 3: data.table gebruiken

 library (data.table)

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

Elke methode retourneert exact hetzelfde resultaat, maar de basis-R-methode is doorgaans aanzienlijk langzamer bij het werken met grote dataframes.

De volgende voorbeelden laten zien hoe u elk van deze methoden in de praktijk kunt gebruiken met het volgende dataframe:

 #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

Methode 1: Tel unieke waarden per groep met behulp van Base R

De volgende code laat zien hoe je het aantal verschillende puntwaarden voor elk team kunt tellen met basis 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

Uit het resultaat kunnen we zien:

  • Er zijn 2 unieke puntwaarden voor Team A.
  • Er zijn 2 unieke puntwaarden voor Team B.
  • Er is 1 unieke puntenwaarde voor Team C.

Methode 2: Tel unieke waarden per groep met behulp van dplyr

De volgende code laat zien hoe je het aantal verschillende puntwaarden voor elk team kunt tellen met behulp van 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

Merk op dat deze resultaten overeenkomen met die van de basis R-methode.

Methode 3: Tel unieke waarden per groep met behulp van data.table

De volgende code laat zien hoe u het aantal verschillende puntwaarden voor elk team kunt tellen met behulp van 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

Merk op dat deze resultaten overeenkomen met die van de vorige twee methoden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen kunt uitvoeren met dplyr:

Hoe waarden te hercoderen met dplyr
Hoe NA te vervangen door Zero in dplyr
Variabelen sorteren op groep met dplyr
Hoe u de eerste rij per groep selecteert met dplyr

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert