在时间序列中查找缺失值。

3

我有一组时间序列数据。 我需要找到时间序列数据中的缺失值,并将其显示给用户。我只需要一个能够快速运行的算法。由于这个输出需要在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天的观测中,缺少了Adams和Brown的数据。

我想创建一个函数,以捕获缺失的日期和观测值。

输出应该创建一个带有缺失值及其观测值的数据框。

我刚刚创建了我的问题陈述的示例。

实际数据集将非常大。

感谢您关注此事,如果需要更多细节,请告诉我。


2
请查看?is.na - MichaelChirico
抱歉,我不明白你的意思。 - Ravi
在R命令提示符中键入?is.na,然后阅读帮助页面。 - B Williams
在我所创建的数据集中,没有NA值。 - Ravi
你能更明确地说明你希望输出的样子吗? - ulfelder
1个回答

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

当我在RStudio中运行它时,它可以正常运行。 但是在Shiny中运行时出现了错误。 我收到以下错误信息: Error in .subset(x, i) : invalid subscript type 'list'. - Ravi
这个问题有没有不同的解决方法? - Ravi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接