2016-04-24 9 views
0

Ich habe zwei Sätze von Daten, jeweils in einem separaten Datenrahmen. Dies liegt daran, dass eine von einer Excel-Tabelle und die andere durch automatische Iteration von Rohdatendateien abgeleitet wird. Beide Datenrahmen haben eines gemeinsam: Eine erste Spalte enthält eine einheitliche Zeitstempelinformation für die Beobachtungen in ihnen. df1 enthält Daten zu Feuchte und Temperatur (Variablen: Zeitstempel, Brummen, Temp) und df2 enthält eine Sauerstoff-, eine Leistungs- und eine Zeitvariable (Variablen: Zeitstempel, O2, Leistung, Zeit).Verknüpfen von Datenrahmen unterschiedlicher Länge mit verschiedenen Spalten in R

Idealerweise sollten beide df1 alle zeitgestempelten Beobachtungen enthalten, die df2 ebenfalls enthält. Außerdem enthält df1 einige zusätzliche Beobachtungen, die gereinigt werden müssen.

Ich möchte beide Datenrahmen "beitreten", so dass für jeden Zeitstempel alle Variablenwerte von beiden df verbunden sind (d. H. Variablen: Zeitstempel, Brummen, Temp, O2, Leistung, Zeit). Jene Beobachtungen, die nur in df1 vorkommen, sollten entfernt werden.

Gibt es eine kluge Möglichkeit, das zu tun?

Mit freundlichen Grüßen kruemelprinz

Antwort

1

Scheint, wie Sie nur für einen einfachen left_join suchen. Dies kann über dplyr mit

left_join(df2, df1) 

getan werden, die nur die Zeilen zurück, wo DF2 und DF1 Übereinstimmung in der Timestamp-Spalte. (Dies lässt alle zusätzlichen Beobachtungen in df1 fallen).

Eine Basis R-Implementierung ist:

merge(x = df2, y = df1, by = "timestamp", all.x = TRUE) 
+0

Das ist genau das, was ich gesucht habe! Vielen Dank und einen schönen Tag! – kruemelprinz

+0

Gern geschehen! Wenn Sie mit der Antwort zufrieden sind, können Sie sie als korrekt markieren, indem Sie auf das grüne Häkchen neben der Antwort klicken. Freue mich zu helfen. –

+0

Absolut! Danke für den Tipp :) – kruemelprinz

Verwandte Themen