Density ausgeben
Moderator: jogo
Density ausgeben
Ich habe (aus eurer Sicht bestimmt) ein sehr triviales Problem. Habe einen Datensatz bei dem ich irgendwie nicht die Dichte ausgeben kann, da density die Daten nicht als numerisch erkennt. Wie kann ich das als numerisch bestimmen? Sind einfach Werte mit zwei Nachkommastellen. Hat das was mit dem Komma als Trennzeichen zu tun? Wie kann ich das bereits beim einlesen berücksichtigen?
Danke für eure Hilfe...
Danke für eure Hilfe...
- Dateianhänge
-
- Experiment II Ausgangsverteilung.csv
- (2.66 KiB) 140-mal heruntergeladen
Re: Density ausgeben
.
Zuletzt geändert von Isegrim am Mi Apr 20, 2022 3:40 pm, insgesamt 1-mal geändert.
Re: Density ausgeben
Aber ich nutze das Komma ja nicht als Separator. Da stehen in der ersten Spalte halt 365 Zahlen (jeweils in einer Zelle nur eine Zahl) mit zwei Nachkommastellen. Die werden nur nicht als numerisch erkannt.
Re: Density ausgeben
Sorry, in der Abfrage stand mal "decimal" - und nicht "separator".
Da ist mir wohl eine Alternative vorgeschlagen worden, die ich leichtsinnigerweise akzeptiert habe !
Da ist mir wohl eine Alternative vorgeschlagen worden, die ich leichtsinnigerweise akzeptiert habe !
Re: Density ausgeben
Im einfachsten Fall vielleicht so?
scan liest einzelne Spalten als Vector ein. Wenn Du ggplot2 verwenden möchtest, dann brauchst Du die Daten als data.frame. Dann lieber gleich mit read.table einlesen:
LG,
Bernhard
Code: Alles auswählen
daten <- scan("http://forum.r-statistik.de/download/file.php?id=1714",
dec = ",")
plot(density(daten), main="")
Code: Alles auswählen
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=1714",
dec = ",", header = FALSE)
library(ggplot2)
ggplot(daten, aes(x = V1)) +
geom_density()
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Density ausgeben
Perfekt, danke für die Hilfebigben hat geschrieben: ↑Mi Apr 20, 2022 4:13 pm Im einfachsten Fall vielleicht so?
scan liest einzelne Spalten als Vector ein. Wenn Du ggplot2 verwenden möchtest, dann brauchst Du die Daten als data.frame. Dann lieber gleich mit read.table einlesen:Code: Alles auswählen
daten <- scan("http://forum.r-statistik.de/download/file.php?id=1714", dec = ",") plot(density(daten), main="")
LG,Code: Alles auswählen
daten <- read.table("http://forum.r-statistik.de/download/file.php?id=1714", dec = ",", header = FALSE) library(ggplot2) ggplot(daten, aes(x = V1)) + geom_density()
Bernhard
Re: Density ausgeben
Kurze Nachfrage noch, wie könnte ich das ganze erweitern, wenn die Daten (die die Dichtefunktion bilden sollen) in Zeilen und Spalten (auch organisatorischen Gründen) verteilt sind? Eine Dichte soll aber mit ggplot2 über alles zusammen bestimmt werden.
- Dateianhänge
-
- Beispiel 1.csv
- (567.53 KiB) 99-mal heruntergeladen
Re: Density ausgeben
Hallo Isegrim,
wenn man das einliest mit
wird es von R verstanden als data.frame mit 213 Variablen und je 365 Beobachtungen pro Variable. Wenn ich Dich richtig verstehe, ist diese Anordnung aber nicht logisch sinnvoll, sondern nur praktisch beim Erheben gewesen und in Wirklichkeit ist das alles eine Variable, d. h. die Spalten sollen zu einer großen Spalte zusammengeführt werden.
Wenn Du so etwas sehr kontrolliert und nicht mit allen Spalten machen willst, dann funktioniert das sehr gut mit stack:
Wenn man, wie Du hier, nicht alle Spalten einzeln aufführen will, dann kann man select = TRUE setzen:
Ein anderer Weg, das mit wirklich allen Spalten zu machen, wäre die Funktion unlist. Das beruht darauf, dass ein data.frame eine Liste von Spalten ist und diese Liste kann man mit unlist auflösen:
HTH,
Bernhard
PS: Hast Du Dein Problem mit dem Darstellen mehrerer Dichtekurven in einem Plot lösen können? Auch das ließe sich schön mit stack lösen, wenn Du beispielsweise die Dichteverteilungen der ersten, zweiten und dritten Spalte vergleichen wolltest:
wenn man das einliest mit
Code: Alles auswählen
bsp <-read.table("http://forum.r-statistik.de/download/file.php?id=1715",
dec = ",", sep = ";")
Wenn Du so etwas sehr kontrolliert und nicht mit allen Spalten machen willst, dann funktioniert das sehr gut mit stack:
Code: Alles auswählen
bsp <-read.table("http://forum.r-statistik.de/download/file.php?id=1715",
dec = ",", sep = ";")
dreiSpalten <- stack(bsp, select = c("V1", "V2", "V3"))
head(dreiSpalten, 10)
plot(density(dreiSpalten$values))
Code: Alles auswählen
bsp <-read.table("http://forum.r-statistik.de/download/file.php?id=1715",
dec = ",", sep = ";")
dreiSpalten <- stack(bsp, select = TRUE)
plot(density(dreiSpalten$values))
Code: Alles auswählen
bsp <-read.table("http://forum.r-statistik.de/download/file.php?id=1715",
dec = ",", sep = ";")
plot(density(unlist(bsp)))
Bernhard
PS: Hast Du Dein Problem mit dem Darstellen mehrerer Dichtekurven in einem Plot lösen können? Auch das ließe sich schön mit stack lösen, wenn Du beispielsweise die Dichteverteilungen der ersten, zweiten und dritten Spalte vergleichen wolltest:
Code: Alles auswählen
bsp <-read.table("http://forum.r-statistik.de/download/file.php?id=1715",
dec = ",", sep = ";")
dreiSpalten <- stack(bsp, select = c("V1", "V2", "V3"))
library(ggplot2)
ggplot(dreiSpalten) +
geom_density(aes(x = values, color = ind))
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte