Bei Teilübereinstimmung Daten zusammenfügen

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
janedoe

Bei Teilübereinstimmung Daten zusammenfügen

Beitrag von janedoe »

Schönen Samstagvormittag zusammen,

ich habe zwei Datenfiles eingelesen, das eine enthält das Datum und die dazugehörigen Messwerte, das andere das Datum und einen Referenzwert. Jetzt möchte ich die beiden files zu einem data.frame zusammenfügen. Allerdings ist die Datumszuweisung nicht die gleiche.

Im File mit den Messwerten habe ich alle 30 Minute einen Werte, das File mit den Referenzwerten allerdings alle 10 Minuten. Zudem ist der Datumstempel in den beiden Files unterschiedlich.

Code: Alles auswählen

print(daten_ref)
DATUM                           Ref
2015-01-17 21:40:00.000      7.5
2015-01-17 21:50:00.000      4.5
2015-01-17 22:00:00.000      8.0
2015-01-17 22:10:00.000      7.0
2015-01-17 22:20:00.000      8.5

print(daten_mess)
DATUM              mw
2015-01-17 18:30  8.6 
2015-01-17 19:00  19.4 
2015-01-17 19:30  9.7 
2015-01-17 20:00  9.7 
2015-01-17 20:30 17.1
2015-01-17 21:00 11.2 
2015-01-17 21:30 11.5 
2015-01-17 22:00 13.2 
2015-01-17 22:30 10.5 

Jetzt möchte ich gerne die beiden File miteinander verbinden wenn das Datum übereinstimmt. Am besten wäre es,

Code: Alles auswählen

DATUM                           ref           m
2015-01-17 21:40:00.000      7.5          NA
2015-01-17 21:50:00.000      4.5          NA
2015-01-17 22:00:00.000      8.0          13.2 
2015-01-17 22:10:00.000      7.0          NA
2015-01-17 22:20:00.000      8.5          NA
2015-01-17 22:20:00.000      2.7          NA
2015-01-17 22:30:00.000      7.9          10.5
Da ich Werte von mehrere Jahren einlesen soll, möchte ich das gerne automatisch machen. Leider weiß ich nicht so ganz, wie genau ist die unterschiedliche Datumschreibweise berücksichtigen soll. Gibt es da eine Möglichkeit, eine if-Bedingung zu starten? Und wie formuliere ich, das nur ein Teil des Datums übereinstimmen soll? Benötige ich dann noch eine for-Schleife um das Datum, durchlaufen zu lassen?

Wahrscheinlich denke ich hier viel zu kompliziert und hoffe, dass mir einer von euch weiterhelfen kann.
Vielen Dank schon mal.

glg. J
janedoe

Re: Bei Teilübereinstimmung Daten zusammenfügen

Beitrag von janedoe »

Hallo nochmals,

ich habe jetzt folgendes probiert:

Code: Alles auswählen

daten_mess$DATUM <- format(as.Date(daten_mess$DATUM), "%Y-%m-%d %H:%M:%S.000")
 df <- merge(x = daten_mess, y = daten_ref, by = "DATUM", all = TRUE) 
Ich glaube, dass der "merge"-Befehl hier eigentlich eine gute Wahl sein müsste? Allerdings funktioniert bei mir die erste Zeile, nicht so, wie ich das gerne hätte. Wenn ich mir nach der Eingabe das Datum ausgeben lasse, läuft zwar das 2015-01-17 weiter bis auf beispielsweise 2015-01-31, die Stunden, Minuten und Sekunden-Anzeige bleibt aber immer bei 00:00:00.000.

Code: Alles auswählen

 "2015-01-31 00:00:00.000" "2015-01-31 00:00:00.000" "2015-01-31 00:00:00.000"
"2015-01-31 00:00:00.000" "2015-01-31 00:00:00.000" "2015-01-31 00:00:00.000"
Danke und glg.
J
janedoe

Re: Bei Teilübereinstimmung Daten zusammenfügen

Beitrag von janedoe »

Hallo.

leider bin ich mit dem Datum noch nicht weitergekommen.
Kann mir da jemand weiterhelfen?

Bei daten_mess$DATUM handelt es sich um einen CHAR.

Code: Alles auswählen

'data.frame':   70054 obs. of  2 variables:
 $ DATUM    : chr  "2015-01-01 00:00:00.000" "2015-01-01 00:05:00.000" "2015-01-01 00:10:00.000" "2015-01-01 00:15:00.000" ...
Grüße,
J
Antworten