2017-04-05 94 views
2

我有时间系列数据。 我需要找到时间序列数据中的缺失值并将其显示回给用户。我只需要一个运行速度很快的算法。由于这个输出需要在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天失踪观察亚当斯和布朗。

我想创造一个我捕捉丢失一天的观察

输出应该建立在缺失值和观测数据帧的功能。

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

真实数据集将会非常大。

感谢您期待已阅读此内容。 让我知道如果我可以提供一些更多的细节

+2

请参阅'is.na' – MichaelChirico

+0

恐怕我没有得到你 – Ravi

+0

在R命令提示符中键入'?is.na' - 然后阅读帮助页面。 –

回答

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 
+0

当我在rstudio中运行它时,它运行良好。 闪亮运行时出现错误。 我收到以下错误: .subset(x,i)中的错误:无效的下标类型“列表”。 – Ravi

+0

这是否有不同的方法 – Ravi