2010-09-24 11 views
10

Ho una tabella di frequenza pre-abbinata per un set di dati piuttosto grande. Cioè, un vettore a colonna singola di bin e un vettore a colonna singola di conteggi associati a quei bin. Vorrei che R tracciasse un istogramma di questi dati eseguendo ulteriori binning e sommando i conteggi esistenti. Ad esempio, se nei dati pre-abbinati ho qualcosa come [(0.01, 5000), (0.02, 231), (0.03, 948)], dove il primo numero è il contenitore e il secondo è il conteggio, e io scegliere 0.04 come nuova larghezza del cestino, mi aspetto di ottenere [(0.04, 6179)]. Qual è il modo più veloce o più semplice per farlo in R?Come stampare un istogramma con preconfezionata in R

risposta

6

Sembra che ggplot2 abbia la risposta.


library(ggplot2) 
qplot(bin, data=cbind(bins,counts), weight=counts, geom="histogram") 
+0

sei veloce;) Stavo solo guardando come ho fatto questo in passato. Ho visto due modi in cui avevo hackerato questo 1) ggplot2 e 2) il campionamento dai dati raccolti e poi il rebinning. Preferivo di gran lunga ggplot2 ma il rebinning era un trucco che ho preparato prima di scoprire che ggplot poteva farlo. –

1

Il nuovo HistogramTools pacchetto su CRAN ha un certo numero di funzioni utili per fare esattamente questo. Nell'esempio, se si desidera unire tre secchi adiacenti insieme in ciascun punto dell'istogramma per produrre un nuovo istogramma con 1/3 di numero di bucket, è possibile utilizzare la funzione MergeBuckets.

install.packages("HistogramTools") 
library(HistogramTools) 
h <- hist(rexp(1000), breaks=60) 
plot(MergeBuckets(h, adj.buckets=3)) 

In alternativa, è anche possibile specificare un elenco dei nuovi punti di interruzione che si desidera in modo esplicito, piuttosto che raccontare MergeBuckets() per unire sempre lo stesso numero di secchi adiacenti. enter image description here