Desidero raggruppare un frame di dati per una colonna (proprietario) e generare un nuovo frame di dati che abbia il conteggio di ciascun tipo di fattore per ogni osservazione. Il vero quadro di dati è abbastanza grande e ci sono 10 diversi fattori.riepilogo dei conteggi di un fattore con dplyr
Ecco alcuni input esempio:
library(dplyr)
df = tbl_df(data.frame(owner=c(0,0,1,1), obs1=c("quiet", "loud", "quiet", "loud"), obs2=c("loud", "loud", "quiet", "quiet")))
owner obs1 obs2
1 0 quiet loud
2 0 loud loud
3 1 quiet quiet
4 1 loud quiet
Cercavo uscita che assomiglia a questo:
out = data.frame(owner=c("0", "0", "1", "1"), observation=c("obs1", "obs2", "obs1", "obs2"), quiet=c(1, 0, 1, 2), loud=c(1, 2, 1, 0))
owner observation quiet loud
1 0 obs1 1 1
2 0 obs2 0 2
3 1 obs1 1 1
4 1 obs2 2 0
di fusione mi viene parzialmente lì:
melted = tbl_df(melt(df, id=c("owner")))
owner variable value
1 0 obs1 quiet
2 0 obs1 loud
3 1 obs1 quiet
4 1 obs1 loud
5 0 obs2 loud
6 0 obs2 loud
7 1 obs2 quiet
8 1 obs2 quiet
Ma qual è il ultimo passo? Se "valore" era un valore numerico, andrei semplicemente:
melted %>% group_by(owner, variable) %>% summarise(counts=sum(value))
Grazie mille!
Questa è una vecchia questione, ma per quel che vale c'è una caratteristica poco conosciuta di 'dcast' che consente di applica una funzione di aggregazione/riepilogo in questi casi. Penso che il valore predefinito sia il conteggio. – shadowtalker