Come trovare il valore massimo per gruppo in r


Spesso potresti voler trovare il valore massimo di ciascun gruppo in un frame di dati in R. Fortunatamente, questo è facile da fare utilizzando le funzioni nel pacchetto dplyr .

Questo tutorial spiega come eseguire questa operazione utilizzando il seguente frame di dati:

 #create data frame
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))

#view data frame
df

  team position points
1 AG 12
2 AF15
3 FY 19
4 BG 22
5 BG 34
6 BG 34
7 BF 39

Esempio 1: trovare il valore massimo per gruppo

Il seguente codice mostra come trovare il valore massimo per squadra per posizione:

 library(dplyr)

#find max value by team and position
df %>%
  group_by (team, position) %>%
  summarize (max = max(points, na.rm= TRUE ))

# A tibble: 4 x 3
# Groups: team [?]
  team position max
      
1AF 19.0
2 AG 12.0
3 BF 39.0
4 BG 34.0

Esempio 2: restituisce righe contenenti il valore massimo per gruppo

Il codice seguente mostra come restituire le righe contenenti il valore massimo per squadra e per posizione:

 library(dplyr)

#find rows that contain max points by team and position
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 AG 12.0
2AF 19.0
3 BG 34.0
4 BG 34.0
5BF 39.0

Esempio 3: restituisce una singola riga contenente il valore massimo per gruppo

Nell’esempio precedente, c’erano due giocatori che avevano il numero massimo di punti nella squadra A ed erano entrambi nella posizione G. Se vuoi restituire solo il primo giocatore con il valore massimo in un gruppo, puoi usare la funzione slice( ) funzione. operare come segue:

 library(dplyr)

#find rows that contain max points by team and position
df %>%
  group_by (team, position) %>%
  slice (which.max(points))

# A tibble: 4 x 3
# Groups: team, position [4]
  team position points
       
1AF 19.0
2 AG 12.0
3 BF 39.0
4 BG 34.0

Risorse addizionali

La guida completa: come raggruppare e riepilogare i dati in R
Come filtrare le righe in R
Come rimuovere le righe duplicate in R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *