So zählen sie eindeutige werte nach gruppen in r (mit beispielen)


Sie können die folgenden Methoden verwenden, um die Anzahl der eindeutigen Werte pro Gruppe in R zu zählen:

Methode 1: Verwenden Sie Base R

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

Methode 2: dplyr verwenden

 library (dplyr)

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

Methode 3: Verwendung von data.table

 library (data.table)

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

Jede Methode liefert genau das gleiche Ergebnis, aber die Basis-R-Methode ist bei der Arbeit mit großen Datenrahmen tendenziell deutlich langsamer.

Die folgenden Beispiele zeigen, wie jede dieser Methoden in der Praxis mit dem folgenden Datenrahmen verwendet wird:

 #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: Zählen Sie eindeutige Werte nach Gruppe mithilfe von Basis R

Der folgende Code zeigt, wie die Anzahl der unterschiedlichen Punktwerte für jedes Team mithilfe der Basis R gezählt wird:

 #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

Aus dem Ergebnis können wir sehen:

  • Es gibt 2 eindeutige Punktwerte für Team A.
  • Es gibt 2 eindeutige Punktwerte für Team B.
  • Es gibt 1 eindeutigen Punktwert für Team C.

Methode 2: Zählen Sie mit dplyr eindeutige Werte nach Gruppe

Der folgende Code zeigt, wie man mit dplyr die Anzahl der unterschiedlichen Punktwerte für jedes Team zählt:

 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

Beachten Sie, dass diese Ergebnisse mit denen der Basis-R-Methode übereinstimmen.

Methode 3: Zählen Sie mithilfe von data.table eindeutige Werte nach Gruppe

Der folgende Code zeigt, wie man mithilfe von data.table die Anzahl der unterschiedlichen Punktwerte für jedes Team zählt:

 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

Beachten Sie, dass diese Ergebnisse mit denen der beiden vorherigen Methoden übereinstimmen.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erklärt, wie Sie andere häufige Vorgänge mit dplyr ausführen:

So kodieren Sie Werte mit dplyr neu
So ersetzen Sie NA durch Zero in dplyr
So sortieren Sie Variablen mit dplyr nach Gruppen
So wählen Sie mit dplyr die erste Zeile nach Gruppe aus

Einen Kommentar hinzufügen

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