用R中的插值填充缺失值datetime序列数据
我有以下数据集用R中的插值填充缺失值datetime序列数据,r,datetime,interpolation,R,Datetime,Interpolation,我有以下数据集 name - old - new - datetime 1051 38656 38400 2016-01-24 03:22:37 1051 5888 5632 2016-01-24 04:03:28 1051 5632 38144 2016-01-24 04:34:22 1051 5120 4864 2016-01-
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
我要插入此数据集:
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
name - old - new - datetime
1051 ? ? 2016-01-24 03:20:00
1051 ? ? 2016-01-24 03:30:00
1051 ? ? 2016-01-24 03:40:00
1051 ? ? 2016-01-24 03:50:00
1051 ? ? 2016-01-24 04:00:00
1051 ? ? 2016-01-25 04:10:00
.. .. .. ..
我有一个复杂的数据集。所以,我想插值以获得更干净的数据集。我试过这个:
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
data.frame(datetime = seq(roomsdatetime$datetime[1], roomsdatetime$datetime[nrow(roomsdatetime)], by = "10 min")) %>%
mutate(roomsdatetime, approx = na.approx(roomsdatetime$old_value))
我得到这个错误:
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
错误:错误的结果大小(3562),应为3565或1
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
还有别的办法吗 在Excel中,在最左边的顶部输入以下内容:
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
[通过公式“=(B3-$B$2)*86400”获得“差异”(以秒为单位,在(有序)日期时间和基准24.01.2016 03:20:00之间,其值指定为0)列]
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
然后,File-Save-as-[FileName:seymalaca.csv;键入:“csv(逗号分隔)(*.csv)”]
name - old - new - datetime
1051 38656 38400 2016-01-24 03:22:37
1051 5888 5632 2016-01-24 04:03:28
1051 5632 38144 2016-01-24 04:34:22
1051 5120 4864 2016-01-24 03:56:33
1051 37376 37632 2016-01-25 08:08:16
.. .. .. ..
不清楚你想要什么。是否要将数据转换为10分钟间隔?如果是这种情况,请参见此处的示例,注意线性插值!“使用线性插值将数据转换为等距观测值可能会引入大量重要且难以量化的偏差”。参考文献:M.Scholes和J.Williams,“从非同步数据估计β”,金融经济学杂志5:309–3271977。你们的目标当然不是获得等间距的数据,但无论如何你们都会尝试使用插值。问题中也缺少插值的类型:线性、二次、三次等。。你知道吗?在控制台中使用smooth.spline,通过smooth.spline分析三次插值。Seyma Alaca应接受该解决方案。她似乎不知道如何使用“接受”或“这个答案很有用”按钮。