So finden Sie den Maximalwert nach Gruppe in R

Von Fabian
Kategorie: R
Tags: dplyr
Lesezeit: 2 Minuten

Oft möchten Sie vielleicht den Maximalwert jeder Gruppe in einem Dataframe in R finden. Praktischerweise ist dies mit Funktionen aus dem dplyr-Paket einfach zu bewerkstelligen.

In diesem Tutorial wird die Verwendung des folgenden Dataframes erläutert:

# Dataframe erstellen
df <- data.frame(team = c('A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 position = c('G', 'F', 'F', 'G', 'G', 'G', 'F'),
                 points = c(12, 15, 19, 22, 34, 34, 39))

# Dataframe anzeigen
df

  team position points
1    A        G     12
2    A        F     15
3    A        F     19
4    B        G     22
5    B        G     34
6    B        G     34
7    B        F     39

Beispiel 1: Maximalwert nach Gruppe ermitteln

Der folgende Code zeigt, wie Sie den Maximalwert nach Team und Position ermitteln:

library(dplyr)

#Finden Sie den Maximalwert nach Team und Position
df %>%
  group_by(team, position) %>%
  summarise(max = max(points, na.rm=TRUE))

# A tibble: 4 x 3
# Groups:   team [?]
  team   position   max

1 A      F         19.0
2 A      G         12.0
3 B      F         39.0
4 B      G         34.0

Beispiel 2: Zeilen zurückgeben, die den Maximalwert nach Gruppe enthalten

Der folgende Code zeigt, wie die Zeilen, die den Maximalwert enthalten, nach Team und Position zurückgegeben werden:

library(dplyr)

#Finden Sie Zeilen, die nach Team und Position maximale Punkte enthalten
df %>%
  group_by(team, position) %>%
  filter(points == max(points, na.rm=TRUE))

# A tibble: 5 x 3
# Groups:   team, position [4]
  team   position points

1 A      G          12.0
2 A      F          19.0
3 B      G          34.0
4 B      G          34.0
5 B      F          39.0

Beispiel 3: Geben Sie eine einzelne Zeile zurück, die den Maximalwert nach Gruppe enthält

Im vorherigen Beispiel gab es zwei Spieler mit der maximalen Punktzahl in Team A, die beide auf Position G waren. Wenn Sie nur den ersten Spieler mit dem maximalen Wert in einer Gruppe zurückgeben möchten, können Sie die slice()-Funktion verwenden:

library(dplyr)

#Finden Sie Zeilen, die nach Team und Position maximale Punkte enthalten
df %>%
  group_by(team, position) %>%
  slice(which.max(points))

# A tibble: 4 x 3
# Groups:   team, position [4]
  team   position points

1 A      F          19.0
2 A      G          12.0
3 B      F          39.0
4 B      G          34.0

Zusätzliche Ressourcen

Die vollständige Anleitung: Gruppieren und Zusammenfassen von Daten in R
So filtern Sie Zeilen in R
So entfernen Sie doppelte Zeilen in R

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: