【发布时间】:2016-12-08 11:06:05
【问题描述】:
在一个数据框中,我每天在 00:00、06:00、12:00 和 18:00 点测量四次风速数据。要将这些与其他数据结合起来,我需要将中间的时间填充到 15 分钟的分辨率。我想通过简单的插值来填补空白。
以下示例生成两个对应的示例数据帧。 df1 和 df2 需要合并。在生成的合并数据帧中,6 小时值之间的间隙值(var == NA?)需要通过简单的平均插值来填充。 我的问题是如何合并两者并在给定值之间进行具体插值。
第一个数据帧
创作:
# create a corresponding sample data frame
df1 <- data.frame(
date = seq.POSIXt(
from = ISOdatetime(2015,10,1,0,0,0, tz = "GMT"),
to = ISOdatetime(2015,10,14,23,59,0, tz= "GMT"),
by = "6 hour"
),
windspeed = abs(rnorm(14*4, 10, 4)) # abs() because windspeed shoud be positive
)
结果数据框:
> # show the head of the dataframe
> head(df1)
date windspeed
1 2015-10-01 00:00:00 17.928217
2 2015-10-01 06:00:00 11.306025
3 2015-10-01 12:00:00 6.648131
4 2015-10-01 18:00:00 10.320146
5 2015-10-02 00:00:00 2.138559
6 2015-10-02 06:00:00 9.076344
第二个数据帧
创作:
# create a 2nd corresponding sample data frame
df2 <- data.frame(
date = seq.POSIXt(
from = ISOdatetime(2015,10,1,0,0,0, tz = "GMT"),
to = ISOdatetime(2015,10,14,23,59,0, tz= "GMT"),
by = "15 min"
),
var = abs(rnorm(14*24*4, 300, 100))
)
结果数据框:
> # show the head of the 2nd dataframe
> head(df2)
date var
1 2015-10-01 00:00:00 198.2657
2 2015-10-01 00:15:00 472.9041
3 2015-10-01 00:30:00 605.8776
4 2015-10-01 00:45:00 429.0949
5 2015-10-01 01:00:00 400.2390
6 2015-10-01 01:15:00 317.1503
【问题讨论】:
-
请使用
set.seed使您的示例可重现。另外请添加您的预期输出 -
help("merge"); library(zoo); help("na.approx")
标签: r time-series interpolation