【问题标题】:How to FIND missing observations within a time series and fill with NAs如何在时间序列中查找缺失的观测值并填充 NA
【发布时间】:2019-05-10 21:18:16
【问题描述】:

我有一个 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

【问题讨论】:

    标签: r date time-series missing-data imputation


    【解决方案1】:

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

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

    【讨论】:

    • 准确而优雅。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多