Come contare valori univoci per gruppo in r (con esempi)
È possibile utilizzare i seguenti metodi per contare il numero di valori univoci per gruppo in R:
Metodo 1: utilizzare Base R
results <- aggregate(data=df, values_var~group_var, function (x) length ( unique (x)))
Metodo 2: usa dplyr
library (dplyr) results <- df %>% group_by(group_var) %>% summarize(count = n_distinct (values_var))
Metodo 3: utilizzo di data.table
library (data.table)
df <- data.table(df)
results <- df[, .(count = length ( unique (values_var))), by = group_var]
Ciascun metodo restituisce esattamente lo stesso risultato, ma il metodo R di base tende a essere significativamente più lento quando si lavora con frame di dati di grandi dimensioni.
I seguenti esempi mostrano come utilizzare nella pratica ciascuno di questi metodi con il seguente frame di dati:
#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
Metodo 1: conta i valori univoci per gruppo utilizzando Base R
Il codice seguente mostra come contare il numero di valori di punti distinti per ciascuna squadra utilizzando la base 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
Dal risultato possiamo vedere:
- Ci sono 2 valori di punti unici per la squadra A.
- Ci sono 2 valori di punti unici per la squadra B.
- C’è 1 valore in punti unico per la squadra C.
Metodo 2: conta i valori univoci per gruppo utilizzando dplyr
Il codice seguente mostra come contare il numero di valori di punti distinti per ciascuna squadra utilizzando 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
Si noti che questi risultati corrispondono a quelli del metodo base R.
Metodo 3: conta i valori univoci per gruppo utilizzando data.table
Il codice seguente mostra come contare il numero di valori di punti distinti per ciascuna squadra utilizzando 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
Si noti che questi risultati corrispondono a quelli dei due metodi precedenti.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni utilizzando dplyr:
Come ricodificare i valori utilizzando dplyr
Come sostituire NA con Zero in dplyr
Come ordinare le variabili per gruppo usando dplyr
Come selezionare la prima riga per gruppo utilizzando dplyr