首页 文章

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

提问于
浏览
0

我有一个10年的时间序列,包含每日观察 . 我发现这个系列中的一些行(整行,而不仅仅是观察)都缺失了,这对我的用例来说是个问题 . 日期都是有序的,但是给定的月份可能从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

1 回答

  • 2

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

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

相关问题