0

古典的な問題: さまざまな機器からのデータがさまざまなタイムスケールで記録されます。ここでは、1 時間ごとの環境データ (envdat) があり、環境データを含む応答データ (respdat) に列を追加したいと考えています。ただし、応答データには、しきい値を超える電圧のサブセットであることを除いて、1 秒ごとにポイントがあります (ポイントが欠落しています)。私の目標は、環境データ (正弦波に似ている) に曲線を当てはめ、各応答観測の値を補間することです。以下の例を参照してください。

envdat=structure(list(date.time = structure(c(1369552133, 1369555733, 
1369559333, 1369562933, 1369566533, 1369570133, 1369573733, 1369577333, 
1369580933, 1369584533, 1369588133, 1369591733, 1369595333, 1369598933, 
1369602533, 1369606133, 1369609733, 1369613333, 1369616933, 1369620533, 
1369624133, 1369627733, 1369631333, 1369634933), class = c("POSIXct", 
"POSIXt"), tzone = ""), cool.C = c(9.866, 9.077, 9.077, 6.573, 
6.573, 6.573, 9.669, 9.472, 9.373, 11.334, 11.334, 11.236, 13.75, 
13.942, 13.076, 16.713, 16.808, 16.808, 14.23, 14.325, 14.421, 
11.625, 11.625, 12.207)), .Names = c("time", "temp"), row.names = 63:86, class =     "data.frame")
plot(data$time,data$temp,type="b")
myspline=smooth.spline(data$time,data$temp,spar=.5)
lines(myspline,col="red")
####
respdat=structure(list(time = structure(c(1369606346, 1369606356, 
1369606359, 1369606360, 1369606361, 1369606362, 1369606363, 1369606364, 
1369606365, 1369606366, 1369606367, 1369606368, 1369606369, 1369606370, 
1369606371, 1369606372, 1369606373, 1369606374, 1369606375, 1369606376, 
1369606377, 1369606378, 1369606379, 1369606380, 1369606381), class = c("POSIXct", 
"POSIXt"), tzone = ""), volts = c(2.511094, 2.509647, 2.524574, 
2.954419, 2.756494, 2.59868, 2.94975, 2.87183, 2.846382, 2.788386, 
3.144585, 3.099345, 2.931733, 3.032537, 2.870383, 2.869857, 2.841319, 
2.886822, 2.750839, 3.109142, 3.017413, 3.1194, 2.909508, 2.899776, 
2.903129)), .Names = c("time", "volts"), row.names = c(4036L, 
4046L, 4049L, 4050L, 4051L, 4052L, 4053L, 4054L, 4055L, 4056L, 
4057L, 4058L, 4059L, 4060L, 4061L, 4062L, 4063L, 4064L, 4065L, 
4066L, 4067L, 4068L, 4069L, 4070L, 4071L), class = "data.frame")
print(respdat)

私のアプローチは次のとおりです。

test=predict(myspline,respdat$time)

これはエラーを返します。ガイダンスを歓迎します。

4

1 に答える 1

0

ここでは、env の時間単位のデータを秒単位のデータに補間するアプローチを示します。

library(xts)
## you create the xts object
env.xts <- xts(envdat$temp,envdat$time)
## new index to be used 
new.index <- 
  seq(min(index(env.xts)),max(index(env.xts)), by=as.difftime(1,units='secs'))
## linear approx
na.spline(merge(env.xts,xts(NULL,new.index)))
于 2013-08-02T18:18:31.080 に答える