Ho un set di dati lungo con una riga per individuo raggruppato con le scuole. Ogni riga ha un fattore ordinato {1, 2, 3, 4}, "gatti". Voglio ottenere la percentuale di 1, 2, 3 e 4 all'interno di ciascuna scuola. Il set di dati è simile al seguente:dplyr: Conteggi/percentuali di fattori raggruppati per scuola non raggruppati
school_number cats
1 10505 3
2 10505 3
3 10502 1
4 10502 1
5 10502 2
6 10502 1
7 10502 1
8 10502 2
10 10503 3
11 10505 2
Ho provato qualcosa di simile:
df_pcts <- df %>%
group_by(school_number) %>%
mutate(total=sum(table(cats))) %>%
summarize(cat_pct = table(cats)/total)
ma la variabile totale prodotto dalla fase mutare() mette il numero totale complessivo di righe in ogni riga. Non riesco nemmeno ad arrivare alla fase finale di riepilogo. Non ho capito bene.
P.S. In alcuni altri post ho visto linee come questa:
n = n()
quando faccio che ricevo un messaggio che dice,
Error in n() : This function should not be called directly
Da dove viene questo?
TIA
quello di uscita avete bisogno? colonne separate per 1,2,3 gatti o righe separate per ogni combinazione scuola/gatto? – jalapic
Puoi anche usare 'df%>% group_by (school_number, cats)%>% riepilogo (n = n())%>% mutate (pct = 100 * n/sum (n))' – akrun
Puoi digitare solo ' mutate nella vostra sessione e confermate se l'ultima riga dell'output è ''? Se invece l'output è '', questo è esattamente il problema: in qualche modo plyr è stato caricato dopo che dplyr è stato caricato (e il mutato di plyr non presta attenzione a group_by). Questa è una causa comune (sebbene non l'unica) dei problemi di "group_by non funziona". –