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

Aggiungi un commento

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