Ich habe den folgenden Datensatz.Füllung fehlende Werte Datetime-Serie Daten mit Interpolation in R
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
Ich möchte diesen Datensatz zu interpolieren:
name - old - new - datetime
1051 ? ? 2016-01-24 03:20:00
1051 ? ? 2016-01-24 03:30:00
1051 ? ? 2016-01-24 03:40:00
1051 ? ? 2016-01-24 03:50:00
1051 ? ? 2016-01-24 04:00:00
1051 ? ? 2016-01-25 04:10:00
.. .. .. ..
ich einen Datensatz kompliziert haben. Also möchte ich interpolieren, um einen saubereren Datensatz zu erhalten. Ich habe dies versuchen:
data.frame(datetime = seq(roomsdatetime$datetime[1], roomsdatetime$datetime[nrow(roomsdatetime)], by = "10 min")) %>%
mutate(roomsdatetime, approx = na.approx(roomsdatetime$old_value))
ich diesen Fehler:
Error: wrong result size(3562), expected 3565 or 1
Gibt es eine andere Art und Weise?
ist nicht klar, was Sie fordern. Möchten Sie Ihre Daten in ein 10-Minuten-Intervall umwandeln? Wenn dies der Fall ist, siehe Beispiele hier http://stackoverflow.com/a/10423613/2824732 – Robert
Vorsicht bei der linearen Interpolation! "Die Transformation der Daten in gleich beabstandete Beobachtungen unter Verwendung linearer Interpolation kann eine Reihe signifikanter und schwer quantifizierbarer Verzerrungen einführen". Ref: M. Scholes und J. Williams, "Schätzung Betas von nichtsynchronen Daten", Journal of Financial Economics 5: 309-327, 1977. http://www.sciencedirect.com/science/article/pii/0304405X77900411 Ihr Ziel Es ist natürlich nicht möglich, gleich beabstandete Daten zu erhalten, aber Sie versuchen trotzdem, eine Interpolation zu verwenden. –
Typ der Interpolation fehlt auch in der Frage: linear, quadratisch, kubisch, etc .. Do '? smooth.spline' in der Konsole, um Interpolationen dritten Grades über 'smooth.spline' zu analysieren. –