Lückenhaften Datensatz bereinigen
Lückenhaften Datensatz bereinigen
Hallo zusammen,
ich bin ein absoluter Beginner mit R und habe folgendes Problem:
Ich habe einen dataframe, der in der Spalte "Temp" Temperaturen als numerische Werte anzeigt. Allerdings kommen dort öfters mal Striche "---", so dass ich bestimmte Operationen wie bspw. mean berechnen nicht anwenden kann.
Nun meine Frage: Wie behandel ich diese Striche am Besten? Soll ich sie in NA umwandeln? Gibt es eine Funktion, die alle Zeilen mit "---" einfach ignoriert/löscht? Danke im Voraus für eure Hilfe, bin gerade etwas am verzweifeln.
Gruß,
Max
ich bin ein absoluter Beginner mit R und habe folgendes Problem:
Ich habe einen dataframe, der in der Spalte "Temp" Temperaturen als numerische Werte anzeigt. Allerdings kommen dort öfters mal Striche "---", so dass ich bestimmte Operationen wie bspw. mean berechnen nicht anwenden kann.
Nun meine Frage: Wie behandel ich diese Striche am Besten? Soll ich sie in NA umwandeln? Gibt es eine Funktion, die alle Zeilen mit "---" einfach ignoriert/löscht? Danke im Voraus für eure Hilfe, bin gerade etwas am verzweifeln.
Gruß,
Max
- Dateianhänge
-
- WSDed_2019-11-11.txt
- (360.94 KiB) 40-mal heruntergeladen
Re: Lückenhaften Datensatz bereinigen
Hallo Max,
willkommen im Forum!
In Deinem Fall so:
Man kann noch versuchen, die Spaltenbezeichnungen zu retten:
(In der originalen Datei sind zwei Zeilen für den Kopf vorhanden.)
Was man anschließend mit diesen Werten macht, ist eine ganz andere Frage.
Die sauberste Lösung ist, auf Berechnungen mit diesen Werten zu verzichten.
Gruß, Jörg
willkommen im Forum!
Solche nicht vorhandenen Werte sind ganz klassisch NA. Beim Einlesen kann man solche Kennungen für fehlende Werte behandeln.Effigy hat geschrieben: ↑Di Nov 26, 2019 12:00 pm Ich habe einen dataframe, der in der Spalte "Temp" Temperaturen als numerische Werte anzeigt. Allerdings kommen dort öfters mal Striche "---", so dass ich bestimmte Operationen wie bspw. mean berechnen nicht anwenden kann.
Nun meine Frage: Wie behandel ich diese Striche am Besten? Soll ich sie in NA umwandeln? Gibt es eine Funktion, die alle Zeilen mit "---" einfach ignoriert/löscht? Danke im Voraus für eure Hilfe, bin gerade etwas am verzweifeln.
Code: Alles auswählen
read.table(..., na.strings = "---", ...)
Code: Alles auswählen
D <- read.delim("http://forum.r-statistik.de/download/file.php?id=781", header=FALSE, skip=2, na.strings = "---")
Code: Alles auswählen
H <- read.delim("http://forum.r-statistik.de/download/file.php?id=781", nrows=1)
colnames(D) <- colnames(H)
Was man anschließend mit diesen Werten macht, ist eine ganz andere Frage.
Die sauberste Lösung ist, auf Berechnungen mit diesen Werten zu verzichten.
Gruß, Jörg
Re: Lückenhaften Datensatz bereinigen
Danke Jörg,
das hat funktioniert!
Kannst du mir bitte noch sagen, wie ich am besten einen Mittelwert für jeden Tag berechnen kann?
Gruß
das hat funktioniert!
Kannst du mir bitte noch sagen, wie ich am besten einen Mittelwert für jeden Tag berechnen kann?
Gruß
Re: Lückenhaften Datensatz bereinigen
Code: Alles auswählen
tapply(D$Temp, D$X, FUN=mean, na.rm=TRUE)
Code: Alles auswählen
aggregate(Temp ~ X, data=D, FUN=mean)
Re: Lückenhaften Datensatz bereinigen
Was ist hier mit X gemeint?jogo hat geschrieben: ↑Di Nov 26, 2019 1:27 pmoderCode: Alles auswählen
tapply(D$Temp, D$X, FUN=mean, na.rm=TRUE)
Gruß, JörgCode: Alles auswählen
aggregate(Temp ~ X, data=D, FUN=mean)
Gruß
Re: Lückenhaften Datensatz bereinigen
Bei mir ist das die Spalte, die das Datum enthält nach
Gruß, Jörg
Code: Alles auswählen
D <- read.delim("http://forum.r-statistik.de/download/file.php?id=781", header=FALSE, skip=2, na.strings = "---")
H <- read.delim("http://forum.r-statistik.de/download/file.php?id=781", nrows=1)
colnames(D) <- colnames(H)
Re: Lückenhaften Datensatz bereinigen
Ahhh okay, wie gut! Danke! <3
Re: Lückenhaften Datensatz bereinigen
Noch eine Frage:
Ich habe jetzt folgenden Code benutzt, um einen Mittelwert der Temperaturmessungen von jedem Tag zu erhalten.
Mein Dataframe "WSDede3" sieht jetzt so aus:
Var1 Freq
1 01.10.19 12.372340
2 01.11.19 0.872093
3 02.10.19 10.033333
4 02.11.19 9.918750
5 03.10.19 9.350000
6 03.11.19 11.850000
7 .... ... usw.
Wie man sieht, kommt nach dem 01.10.19 schon der 01.11.19. Wie kann ich ihn richtig sortieren? Danke!
Ich habe jetzt folgenden Code benutzt, um einen Mittelwert der Temperaturmessungen von jedem Tag zu erhalten.
Code: Alles auswählen
WSDede <- read.delim(header=TRUE, na.strings = "---", skip=1, file.choose())
WSDede2 <- tapply(WSDede$Temp, WSDede$Date, FUN=mean, na.rm=TRUE)
WSDede3 <- as.data.frame.table(WSDede2)
Var1 Freq
1 01.10.19 12.372340
2 01.11.19 0.872093
3 02.10.19 10.033333
4 02.11.19 9.918750
5 03.10.19 9.350000
6 03.11.19 11.850000
7 .... ... usw.
Wie man sieht, kommt nach dem 01.10.19 schon der 01.11.19. Wie kann ich ihn richtig sortieren? Danke!
Re: Lückenhaften Datensatz bereinigen
Wenn man das Datum vorher wirklich in einen Datumstyp umwandelt, dann wird auch richtig sortiert.
Gruß, Jörg
Code: Alles auswählen
D$Tag <- as.Date(D$X, "%d.%m.%y")
aggregate(Temp ~ Tag, data=D, FUN=mean, na.rm=TRUE)
Re: Lückenhaften Datensatz bereinigen
Ok danke dir, ich hab's letztendlich so gemacht:
Code: Alles auswählen
WSDede3$Var1 <- lubridate::dmy(WSDede3$Var1)
WSDede4 <-dplyr::arrange(WSDede3, Var1)