我有时间序列数据。 我需要在时间序列数据中找到缺失的值并将其显示回用户。我只需要一个运行速度快的算法。由于此输出需要在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天观察到数据缺失。
我想创建一个函数来捕捉缺失的一天和观察
输出应创建一个缺少值及其观察值的数据框。
我刚刚创建了一个问题陈述样本。
真正的数据集非常大。
感谢你期待已经看过这个。 如果我能提供更多详细信息,请告诉我
答案 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