如何在R中重新采样和插入时间序列数据?

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 软件包,其中有大量用于处理时间序列数据的“工具”。

  • 这本身不值得回答,因为它几乎没有帮助。这个答案的任何读者仍然需要自己弄清楚“工具”是否包括对间隙处理和重采样的支持。 (3认同)