lin*_*lof 5 interpolation r time-series
我的测量值大约每5分钟记录一次:
2012-07-09T05:30:01+02:00 1906.1 1069.2 1093.2 3 1071.0 1905.7
2012-07-09T05:35:02+02:00 1905.7 1069.2 1093.0 0 1071.5 1905.7
2012-07-09T05:40:02+02:00 1906.1 1068.7 1093.2 0 1069.4 1905.7
2012-07-09T05:45:02+02:00 1905.7 1068.4 1093.0 1 1069.6 1905.7
2012-07-09T05:50:02+02:00 1905.7 1068.2 1093.0 4 1073.3 1905.7
Run Code Online (Sandbox Code Playgroud)
第一列是数据的时间戳.其余列是记录的数据.
我需要重新采样我的数据,以便每15分钟有一行,例如:
2012-07-09T05:15:00 XX XX XX XX XX XX
2012-07-09T05:30:00 XX XX XX XX XX XX
....
Run Code Online (Sandbox Code Playgroud)
(此外,记录的数据可能存在差距,我希望用一行NA值替换一小时以上的间隙.)
我可以想到几种方法来手动编程,但有没有内置的支持在R中做这种事情?我已经看过了不同的库用于处理时间序列数据(zoo,chron等),但无法找到任何令人满意.
小智 6
你可以使用approx或相关approxfun.如果t向量由数据采样的时间点组成,如果y是带有数据的向量,则f <- approxfun(t,y)创建一个f在时间点之间线性插值数据点的函数.
例:
# irregular time points at which data was sampled
t <- c(5,10,15,25,30,40,50)
# measurements
y <- c(4.3,1.2,5.4,7.6,3.2,1.2,3.7)
f <- approxfun(t,y)
# get interpolated values for time points 5, 20, 35, 50
f(seq(from=5,to=50,by=15))
[1] 4.3 6.5 2.2 3.7
Run Code Online (Sandbox Code Playgroud)
Ale*_*ald -5
您应该看看 openair 软件包,其中有大量用于处理时间序列数据的“工具”。