【发布时间】:2015-07-02 21:38:48
【问题描述】:
我希望删除时间序列中的值,这些值被具有一定最小长度的 NA 块包围。
一些玩具数据:
x = seq(0,10,length.out = 100)
y = sin(x) + rnorm(length(x), mean=0, sd=0.1)
y[20:21] = rep(NA, 2)
y[50:54] = rep(NA, 5)
y[55:59] = seq(-0.1, -0.8, length.out = 5)
y[60:64] = rep(NA, 5)
y[90:91] = rep(NA, 2)
df <- data.frame(x, y)
我希望删除长度小于 10 且前后有 5 个或更多 NA 值的任何 y 值序列。
在我的玩具数据中,索引 55-59 处的 y 值 (a) 少于 10 个连续值,并且 (b) 两边 有 (b) 5 个 NA。因此,应该删除这组值。
其他值由较长的值块组成和/或被NA (
用红色绘制要删除的值:
library(ggplot2)
ggplot(data = df, aes(x, y)) +
geom_line() +
geom_line(data = df[55:59, ], color = "red")
【问题讨论】:
-
@MamounBenghezal 你能详细说明一下吗?
-
“长期真实价值”对我们来说很难实施。如果您可以为我们提供删除内容的严格标准,那就太好了,例如,“任何少于 10 个条目且夹在
NAs 之间的数据序列”。也许编辑您的问题以给出一个更复杂的示例和您期望的输出。 -
我当前的编辑是否澄清了问题,或者您认为需要进一步澄清? (我还在学习如何在这里提出问题)。
-
这是我们应该能够使用的东西。当然,这个问题比原来的问题要复杂一些;-) 今天晚些时候我会找时间编辑我的答案。
-
感谢您的帮助,我会尽量确保我下次第一次问得更好。将问题抽象到其关键组件是很困难的。
标签: r time-series missing-data