在时间序列中查找缺失值

时间:2017-04-05 18:18:00

标签: r

我有时间序列数据。 我需要在时间序列数据中找到缺失的值并将其显示回用户。我只需要一个运行速度快的算法。由于此输出需要在Shiny中生成。无法让用户等待很长时间

# creating sample data
topdays <- seq(1,6,2)
topobs <- rep("Adams",3)
middays <- rep(seq(1:6),3)
midobs <- c(rep("Allen",6),rep("Benton",6),rep("Blackford",6))
bottomdays <- seq(1,6,2)
bottomobs <- rep("Brown",3)
values <- runif(24, min=70, max=100)
obs <- c(topobs,midobs,bottomobs)
days <- c(topdays,middays,bottomdays)
df <- data.frame(days,values,obs)
# end creation of sample data

如您所见,亚当斯和布朗在第2,4,6天观察到数据缺失。

我想创建一个函数来捕捉缺失的一天和观察

输出应创建一个缺少值及其观察值的数据框。

我刚刚创建了一个问题陈述样本。

真正的数据集非常大。

感谢你期待已经看过这个。 如果我能提供更多详细信息,请告诉我

1 个答案:

答案 0 :(得分:0)

我们可以尝试:

library(data.table)
setDT(df)
setkeyv(df, c("days", "obs"))
df[with(df, expand.grid(unique(days), unique(obs)))][is.na(values)]

输出

   days values   obs
1:    2     NA Adams
2:    4     NA Adams
3:    6     NA Adams
4:    2     NA Brown
5:    4     NA Brown
6:    6     NA Brown