如何在时间序列中查找缺失的观察值并用 NA 填充

How to FIND missing observations within a time series and fill with NAs

我有一个 10 年的时间序列,其中包含每天的观察结果。我发现这个系列中的一些行(整行,而不仅仅是观察)丢失了,这对我的用例来说是有问题的。日期都是按顺序排列的,但给定的月份可能从 (ymd) 2017-10-13 而不是 2017-10-01 开始,因此缺少 12 个观察值。我需要确定在这样的序列中哪里有中断,并插入具有正确日期的正确行数,这样我就可以在这些地方使用 NA。

我该怎么做?

这是一个类似于我的数据框的可重现示例,缺少 4018 个带日期戳的观察中的 219 个:

df <- NULL
df$date <- seq(as.Date("2007/01/01"), as.Date("2017/12/31"), "days")
df$obs <- runif(4018)
df <- as.data.frame(df)
df_missing <- df[sample(1:nrow(df), 3799), ]

head(df_missing)
        date        obs
    1 2007-01-01 0.96428609
    2 2007-01-02 0.04199475
    3 2007-01-03 0.72729484
    4 2007-01-04 0.85591517
    5 2007-01-05 0.07373118
    6 2007-01-06 0.71093604

创建一个包含所有日期的网格 g 的数据框,并将其与您的数据框合并:

rng <- range(DF$date)
g <- data.frame(date = seq(rng[1], rng[2], "day"))
merge(DF, g, all = TRUE)