R 中的分钟时间序列。如何插入缺失值以获得相同的时间步长?
Minute time series in R. How to insert missing values in order to have the same steps in time?
我有一个数据集,其中第 1 列是日期时间,第 2 列是特定时间点的价格。此数据通过 bloomberg excel 加载项下载到 Excel。然后我使用 read_excel 函数将这个文件导入到 R.
This is how the data looks like in R
问题:数据应该以1分钟为间隔,但并非总是如此。有时下一行的时间晚了1分钟以上。那么,如何为缺失的分钟插入额外的行?因此,对于每个日期,我都希望有以下顺序:
08:00
08:01
08:02
...
16:58
16:59
17:00
对于这些时间点,我想保留数据集中的价格。如果价格不存在,则应添加缺失。例如,如果我们有:
...
12:31 100
12:32 102
12:35 101
...
那么我想要:
...
12:31 100
12:32 102
12:33 失踪
12:34 失踪
12:35 101
...
最简单的方法是什么?谢谢!
您可以用您拥有的价格创建一个 xts,并将其与具有更高频率(例如每分钟)的序列合并。
library(xts)
library(lubridate)
set.seed(123)
prices <- 100 + rnorm(16)
timeindex <- seq(ymd_hm('2020-05-28 08:45'),
ymd_hm('2020-05-28 09:15'),
by = '2 mins')
prices_xts <- xts(prices, order.by = timeindex)
> head(prices_xts)
[,1]
2020-05-28 08:45:00 99.43952
2020-05-28 08:47:00 99.76982
2020-05-28 08:49:00 101.55871
2020-05-28 08:51:00 100.07051
2020-05-28 08:53:00 100.12929
2020-05-28 08:55:00 101.71506
timeindex2 <- seq(ymd_hm('2020-05-28 08:45'),
ymd_hm('2020-05-28 09:15'),
by = '1 mins')
prices_with_gaps_xts <- merge.xts(prices_xts,
timeindex2)
> head(prices_with_gaps_xts)
prices_xts
2020-05-28 08:45:00 99.43952
2020-05-28 08:46:00 NA
2020-05-28 08:47:00 99.76982
2020-05-28 08:48:00 NA
2020-05-28 08:49:00 101.55871
2020-05-28 08:50:00 NA
我有一个数据集,其中第 1 列是日期时间,第 2 列是特定时间点的价格。此数据通过 bloomberg excel 加载项下载到 Excel。然后我使用 read_excel 函数将这个文件导入到 R.
This is how the data looks like in R
问题:数据应该以1分钟为间隔,但并非总是如此。有时下一行的时间晚了1分钟以上。那么,如何为缺失的分钟插入额外的行?因此,对于每个日期,我都希望有以下顺序:
08:00
08:01
08:02
...
16:58
16:59
17:00
对于这些时间点,我想保留数据集中的价格。如果价格不存在,则应添加缺失。例如,如果我们有:
...
12:31 100
12:32 102
12:35 101
...
那么我想要:
...
12:31 100
12:32 102
12:33 失踪
12:34 失踪
12:35 101
...
最简单的方法是什么?谢谢!
您可以用您拥有的价格创建一个 xts,并将其与具有更高频率(例如每分钟)的序列合并。
library(xts)
library(lubridate)
set.seed(123)
prices <- 100 + rnorm(16)
timeindex <- seq(ymd_hm('2020-05-28 08:45'),
ymd_hm('2020-05-28 09:15'),
by = '2 mins')
prices_xts <- xts(prices, order.by = timeindex)
> head(prices_xts)
[,1]
2020-05-28 08:45:00 99.43952
2020-05-28 08:47:00 99.76982
2020-05-28 08:49:00 101.55871
2020-05-28 08:51:00 100.07051
2020-05-28 08:53:00 100.12929
2020-05-28 08:55:00 101.71506
timeindex2 <- seq(ymd_hm('2020-05-28 08:45'),
ymd_hm('2020-05-28 09:15'),
by = '1 mins')
prices_with_gaps_xts <- merge.xts(prices_xts,
timeindex2)
> head(prices_with_gaps_xts)
prices_xts
2020-05-28 08:45:00 99.43952
2020-05-28 08:46:00 NA
2020-05-28 08:47:00 99.76982
2020-05-28 08:48:00 NA
2020-05-28 08:49:00 101.55871
2020-05-28 08:50:00 NA