2017-02-20 3 views
0

Meine Daten sind aufgrund der hohen Anzahl von Beobachtungen (N = 10M) bereits in Häufigkeitsform zusammengefasst.Histogramm aus Frequenzdaten

Zum Beispiel ist es in der folgenden Form (df):

base <- data.frame(x=round(rnorm(1000,mean=100,sd=10),1)) 
df <- base %>% group_by(x) %>% summarize(n=n()) 

Wie kann ich diese Daten verwenden, um ein Histogramm in ggplot2 zu schaffen? Ich weiß, dass ich das schon vorher getan habe, ohne die Mülleimer manuell zu erstellen, aber ich kann mich nicht erinnern, wie für das Leben ich. Ich möchte vermeiden, die Daten neu zu transformieren, zB:

ggplot() + geom_histogram(aes(rep(df$x, df$n))) 

Vielen Dank im Voraus.

bearbeitet nicht ganzzahligen Beispiel zu schaffen, die auch geom_bar Verwendung von geom_col/geom_bar

+2

'ggplot (df, aes (x, n)) + geom_col()'. Verwenden Sie nicht '$' in 'aes', verwenden Sie stattdessen das richtige' data' Argument. – Axeman

+0

@ Axemans Kommentar scheint richtig zu sein; Ich würde 'width = 1' hinzufügen, so dass es wirklich wie ein Histogramm und nicht ein Barplot aussieht:' ggplot (df, aes (x, n)) + geom_col (width = 1) ' – scoa

+0

Danke, aber das geht nicht Nicht ganzzahlige Daten und erlaubt mir nicht, eine binwidth einzustellen. Beispiel: 'base <- data.frame (x = round (rnorm (1000, Mittelwert = 100, SD = 10), 1)) df <- base %>% group_by (x)%> Summarize% (n = n()) ' –

Antwort

0

Sie schließt nutzen können.

ggplot(df, aes(x, n)) + geom_bar(stat = 'identity') 
+0

Dies funktioniert nicht, wenn die X-Werte nicht gleichmäßig verteilt sind. Darüber hinaus kann es keine alternativen binwidths behandeln. Zum Beispiel: 'base <- data.frame (x = rund (rnorm (1000, Mittelwert = 100, sd = 10), 1)) df <- base %>% group_by (x)%>% summieren (n = n()) ' –

Verwandte Themen