2016-06-03 21 views
1

Eine Spalte mit Uhrzeit und Datum Werte, und die andere mit Werten der Geschwindigkeit, ich möchte den Wert der Geschwindigkeit für eine beliebige Zeit wie folgt interpolieren, aber ich bekomme einen Fehler.Spline-Interpolation für Werte für die Zeit

Dies ist der Datensatz.

startTimestamp  avg_Speed 
2016-04-11 00:01:07 74.45 
2016-04-11 00:05:10 73.58 
2016-04-11 00:06:09 89.90 

ich den Wert der Geschwindigkeit zu interpolieren wollen bei sagen wir - „00.03.11“, habe ich nur die Spline-Funktion als so,

newspeed <- splinefun(k$startTimestamp, k$avg_Speed, method = "monoH.FC") 
newspeed("00:03:11") 

Und das ist der Fehler, den ich bekommen.

Fehler if (Extrapol == "linear" & & jeder (iXtra < - (iL < - (i == 0)) | (iR ...

einige zusätzliche Informationen : class(f$startTimestamp) = "POSIXct" "POSIXt"

Antwort

0

ich denke, es Ihr Problem leicht lösen Klasse werden in numerische (min) zu ändern

# making data (you needn't) 
k <- data.frame(startTimestamp = c("2016-04-11 00:01:07", "2016-04-11 00:05:10", "2016-04-11 00:06:09"), 
       avg_Speed = c(74.45, 73.58, 89.90)) 
k[,1] <- as.POSIXct(k[,1], "GMT") 

# changing class (POSIXct -> difftime -> numeric) 
zero_time <- as.POSIXct("2016-04-11 00:00:00", "GMT") # using your time zone 
k$difftime <- as.numeric(difftime(k$startTimestamp, zero_time)) 
class(k$difftime) ## "numeric" (min) 

# interpolate 
newspeed <- splinefun(k$difftime, k$avg_Speed, method = "monoH.FC") 
newspeed(3 + 11/60) # or newspeed(as.numeric(as.difftime("00:03:11"))) 
      ## results [1] 69.66494 
.
Verwandte Themen