Come calcolare le frequenze relative usando dplyr
Spesso potresti voler calcolare le frequenze/proporzioni relative dei valori in una o più colonne di un frame di dati in R.
Fortunatamente, questo è facile da fare utilizzando le funzioni del pacchetto dplyr . Questo tutorial mostra come utilizzare queste funzioni per calcolare le frequenze relative sul 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, 32, 34, 39)) #view data frame df team position points 1 AG 12 2 AF15 3 FY 19 4 BG 22 5 BG 32 6 BG 34 7 BF 39
Esempio 1: Frequenza relativa di una variabile
Il codice seguente mostra come calcolare la frequenza relativa di ciascuna squadra nel frame di dati:
library(dplyr) df %>% group_by (team) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 2 x 3 team n freq 1 to 3 0.429 2 B 4 0.571
Questo ci dice che la squadra A rappresenta il 42,9% di tutte le righe nel frame di dati mentre la squadra B rappresenta il restante 57,1% delle righe. Tieni presente che insieme la loro somma dà il 100%.
Correlato: La guida completa: come raggruppare e riepilogare i dati in R
Esempio 2: frequenza relativa di più variabili
Il seguente codice mostra come calcolare la frequenza relativa delle posizioni per squadra:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = n / sum(n)) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 0.667 2 AG 1 0.333 3 BF 1 0.250 4 BG 3 0.750
Questo ci dice che:
- Il 66,7% dei giocatori della squadra A è nella posizione F.
- Il 33,3% dei giocatori della squadra A è nella posizione G.
- Il 25,0% dei giocatori della squadra A è nella posizione F.
- Il 75,0% dei giocatori della squadra B è nella posizione G.
Correlati: Come utilizzare Mutate per creare nuove variabili in R
Esempio 3: mostra le frequenze relative come percentuali
Il seguente codice mostra come calcolare la frequenza relativa delle posizioni per squadra e come visualizzare queste frequenze relative come percentuali:
library(dplyr) df %>% group_by (team, position) %>% summarize (n = n()) %>% mutate (freq = paste0(round(100 * n/sum(n), 0), ' % ')) # A tibble: 4 x 4 # Groups: team [2] team position n freq 1 AF 2 67% 2 GA 1 33% 3 BF 1 25% 4 BG 3 75%
Puoi trovare altri tutorial su R qui .