Ho un frame di dati con un formato simile al seguente:Come posso creare un istogramma da dati aggregati in R?
Month Frequency
2007-08 2
2010-11 5
2011-01 43
2011-02 52
2011-03 31
2011-04 64
2011-05 73
Vorrei creare un istogramma da questi dati, utilizzando contenitori X (X sarà probabilmente circa 15, ma i dati effettivi ha oltre 200 mesi) e utilizzando i dati dalla colonna della frequenza come frequenza per ciascun bin dell'istogramma. Come posso realizzare questo?
Ho provato finora due approcci, con i comandi hist() e barplot(). Il problema con hist() è che non sembra darmi alcun modo di specificare che voglio usare la colonna di frequenza nei calcoli di frequenza per l'istogramma. Il problema con barplot() è che non ho alcuna flessibilità nella scelta dei bin X, e se sono omessi mesi, il grafo risultante non è in realtà un vero istogramma perché l'asse x non è continuo.
L'unica idea che ho adesso è di andare con l'approccio barplot(), riempire i mesi mancanti con un valore di 0 per Frequenza e usare lo spazio = 0 per rimuovere la spaziatura tra le barre. Il problema è che non è particolarmente facile scegliere un numero arbitrario di contenitori.
Quando ho posto la domanda, l'ho semplificata troppo perché ho trascurato di menzionare che le mie frequenze erano effettivamente comprese tra 1 e 50+ milioni piuttosto che il semplice esempio che ho dato. Queste frequenze erano troppo alte per usare 'rep' sui dati grezzi sulla mia macchina (8 GB di RAM). Ho convertito queste frequenze in una scala più piccola (da 1 a 100.000) che mi ha dato abbastanza di un istogramma (cioè una distribuzione di probabilità) per i miei scopi. Mi piace comunque la tua risposta in generale, e finora è l'unica soluzione che ho trovato che mi dà un istogramma "reale". Grazie! –
Se le tue frequenze sono troppo alte potresti semplicemente scalare il fattore di frequenza in questo modo: expdat <- dat [rep (1: n, times = dat $ f/1000), "x", drop = FALSE] – Marian