Ich versuche einen Datenrahmen zu vervollständigen, der Lücken hat. Die Daten sind stündlich strukturiert und es gibt einige Sprünge zwischen den Stunden. Dies ist ein Beispiel des Datenrahmen:Füllen Sie Lücken durch Zusammenführen mit Datenrahmen, die abgeschlossen ist?
sms <- read.csv("hoursms2.csv", sep = ";", header = FALSE)
sms$date <- strptime(sms$date,"%d/%m/%Y %H:%M")
date count
2015-12-17 22:00:00 5
2015-12-18 09:00:00 7
2015-12-18 10:00:00 3
2015-12-18 12:00:00 6
Was ich versucht habe, ist ein anderen Datenrahmen zu schaffen, der bis zum Ende des ersten Datenrahmen von Anfang reicht, aber mit allen Stunden und mit einer eindeutigen Kennung zu halten Spur davon:
hh <- seq(min(sms$date), max(sms$date), by="hour")
hh <- as.data.frame(hh)
hh <- cbind(hh,seq(1:3292)) #length of the hh data frame
Welche der folgenden gibt:
date id
2015-12-04 12:00:00 1
2015-12-04 13:00:00 2
2015-12-04 14:00:00 3
2015-12-04 15:00:00 4
2015-12-04 16:00:00 5
ich habe diese drei Dinge Bisher habe ich versucht, auf Stackoverflow gefunden, here, aber sie tun in diesem Fall nicht funktionieren:
res <- merge(sms,hh,by = "date", all = TRUE)
res2 <- res[duplicated(res$date), ]
res3 <- res[!duplicated(res), ]
Die erste commmand, res, was alle Zellen zu duplizieren tut, ist, sie es nach dem Datum nicht fusionieren, so gibt es folgendes:
2015-12-23 19:00:00 5
2015-12-23 19:00:00 NA
Die anderen vermasseln alles. Ich denke, es hat etwas mit dem Datumsformat zu tun, das nicht korrekt zugeordnet ist, aber nicht sicher. Irgendwelche Vorschläge, wie ich meinen Datenrahmen nach Daten vervollständigen könnte?
Eine der Möglichkeiten besteht darin, 'left_join()' aus 'dplyr'-Paket zu verwenden. Du machst 'left_join (hh, sms)' und das sollte dir geben, was du willst, denke ich. – Gopala
@Gopala Probieren Sie es aus und geben Sie den folgenden Fehler: Beitritt durch: "Datum" Fehler: kann nicht bei Spalten 'Datum' x 'Datum': nicht am 'Datum' x 'Datum' wegen inkompatiblen Typen (POSIXct, POSIXt/POSIXlt, POSIXt) – adrian1121