Come contare valori distinti usando dplyr (con esempi)


È possibile utilizzare uno dei seguenti metodi per contare il numero di valori distinti in un frame di dati R utilizzando la funzione n_distinct() di dplyr :

Metodo 1: conta valori distinti in una colonna

 n_distinct(df$column_name)

Metodo 2: conta valori distinti in tutte le colonne

 sapply(df, function (x) n_distinct(x))

Metodo 3: conta valori distinti per gruppo

 df %>%
group_by (grouping_column) %>%
summarize (count_distinct = n_distinct(values_column))

I seguenti esempi mostrano come utilizzare nella pratica ciascuno di questi metodi con il seguente frame di dati:

 library (dplyr)

#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(6, 6, 8, 10, 9, 9, 12, 12),
                 assists=c(3, 6, 4, 2, 4, 5, 5, 9))

#view data frame
df

  team points assists
1 to 6 3
2 to 6 6
3 to 8 4
4 to 10 2
5 B 9 4
6 B 9 5
7 B 12 5
8 B 12 9

Metodo 1: conta valori distinti in una colonna

Il codice seguente mostra come utilizzare n_distinct() per contare il numero di valori distinti nella colonna ‘team’:

 #count distinct values in 'team' column
n_distinct(df$team)

[1] 2

Ci sono 2 valori distinti nella colonna “squadra”.

Metodo 2: conta valori distinti in tutte le colonne

Il codice seguente mostra come utilizzare le funzioni sapply() e n_distinct() per contare il numero di valori distinti in ciascuna colonna del frame di dati:

 #count distinct values in every column
sapply(df, function (x) n_distinct(x))

   team points assists 
      2 5 6

Dal risultato possiamo vedere:

  • Ci sono 2 valori distinti nella colonna “squadra”.
  • Ci sono 5 valori distinti nella colonna “punti”.
  • Ci sono 6 valori distinti nella colonna “aiuti”.

Metodo 3: conta valori distinti per gruppo

Il codice seguente mostra come utilizzare la funzione n_distinct() per contare il numero di valori distinti per gruppo:

 #count distinct 'points' values by 'team'
df %>%
  group_by (team) %>%
  summarize (distinct_points = n_distinct(points))

# A tibble: 2 x 2
  team distinct_points 
1 to 3
2 B 2

Dal risultato possiamo vedere:

  • Ci sono 3 valori di punti distinti per la squadra A.
  • Ci sono 2 valori di punti separati per la squadra B.

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 *