r:tidyverse:dplyr_count_tally
count, tally (dplyr)
Le seguenti funzioni di dplyr servono ad avere tabelle riassuntive e di frequenza di un dataframe.
count()produce le frequenze dei valori (equivale agroup_by()+summarise(n = n()));add_count()aggiunge una colonna (equivale agroup_by()+mutate(n = n()));tally()equivale invece asummarise(n = n());add_tally()aggiunge una colonna.
Tutte prevedono l'argomento wt, per indicare una vettori di pesi ed ottenere dunque delle frequenze ponderate.
# pacchetti e dati library(tidyverse)
Frequenze
# distribuzione di frequenze starwars %>% count(sex)
# A tibble: 5 x 2 sex n <chr> <int> 1 female 16 2 hermaphroditic 1 3 male 60 4 none 6 5 NA 4
df %>% tally() conta i casi:
# tally starwars %>% tally()
# A tibble: 1 x 1
n
<int>
1 87
Distribuzione di due variabili
Quella che segue è una tabella di contingenza, in formato lungo:
starwars %>% count(sex, gender, sort = TRUE)
# A tibble: 6 x 3 sex gender n <chr> <chr> <int> 1 male masculine 60 2 female feminine 16 3 none masculine 5 4 NA NA 4 5 hermaphroditic masculine 1 6 none feminine 1
Con la funzione pivot_wider, passiamo dal formato lungo al formato largo (wide), ottenendo una tabella di contingenza:
starwars %>% count(sex, gender) %>% # elimino gli NA drop_na() %>% pivot_wider(names_from=gender, values_from = n)
# A tibble: 4 x 3
sex feminine masculine
<chr> <int> <int>
1 female 16 NA
2 hermaphroditic NA 1
3 male NA 60
4 none 1 5
Equivale a
starwars %>% # variabile di raggruppamento group_by(sex) %>% count(gender) %>% drop_na() %>% pivot_wider(names_from=gender, values_from = n)
# A tibble: 4 x 3
# Groups: sex [4]
sex feminine masculine
<chr> <int> <int>
1 female 16 NA
2 hermaphroditic NA 1
3 male NA 60
4 none 1 5
Vedi anche summarise (dplyr)
r/tidyverse/dplyr_count_tally.txt · Ultima modifica: 15/10/2025 06:55 da Agnese Vardanega
