Come selezionare i primi n valori per gruppo in r


È possibile utilizzare uno dei seguenti metodi per selezionare i primi N valori per gruppo in R:

Metodo 1: seleziona i primi N valori per gruppo (ignora i valori di parità)

 library (dplyr)

#select top 5 values by group
df %>% 
  arrange(desc(values_column)) %>% 
  group_by(group_column) %>%
  slice(1:5)

Metodo 2: seleziona i primi N valori per gruppo (includi legami)

 library (dplyr)

#select top 5 values by group
df %>%
  group_by(group_column) %>%
  top_n(5, values_column)

Gli esempi seguenti mostrano come utilizzare ciascun metodo con il seguente frame di dati in R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(19, 22, 15, NA, 14, 25, 25, 25),
                 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12))

#view data frame
df

  team points rebounds
1 A 19 10
2 to 22 6
3 to 15 3
4 A NA 7
5 B 14 11
6 B 25 13
7 B 25 9
8 B 25 12

Esempio 1: seleziona i primi N valori per gruppo (ignora i valori di parità)

Il codice seguente mostra come selezionare le prime 2 righe con i valori di punteggio più alti, raggruppate per squadra:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>% 
  arrange(desc(points)) %>% 
  group_by(team) %>%
  slice(1:2)

# A tibble: 4 x 3
# Groups: team [2]
  team points rebounds
        
1 to 22 6
2 A 19 10
3 B 25 13
4 B 25 9

Il risultato contiene le due righe con i valori di punti più alti per ciascuna squadra.

Tieni presente che per la squadra B, in realtà c’erano tre righe che corrispondevano al valore del punto più alto ( 25 ), ma nell’output vengono restituite solo due righe.

Questo metodo ignora semplicemente i collegamenti.

Esempio 2: seleziona i primi N valori per gruppo (includi i pari merito)

Il codice seguente mostra come selezionare le prime 2 righe con i valori di punteggio più alti, raggruppate per squadra:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>%
  group_by(team) %>%
  top_n(2, dots)

# A tibble: 5 x 3
# Groups: team [2]
  team points rebounds
        
1 A 19 10
2 to 22 6
3 B 25 13
4 B 25 9
5 B 25 12

Il risultato contiene le due righe con i valori di punti più alti per ciascuna squadra.

Tieni presente che per la squadra B, tre linee avevano il punteggio più alto ( 25 ), quindi questo metodo includeva quelle tre linee nel risultato finale.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:

Come selezionare le righe in cui il valore appare in qualsiasi colonna in R
Come selezionare colonne specifiche in R
Come selezionare le colonne per indice in R

Aggiungi un commento

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