我希望删除时间序列中的值,这些值被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)
Run Code Online (Sandbox Code Playgroud)
我希望删除长度小于10且前面跟着5个或更多NA值的任何y值序列.
在我的玩具数据,在索引55-59的y值具有(a)小于连续10个值,并且具有(B)5 NA上两个侧面.因此,应该删除这个值块.
其他值由较长的值块组成和/或由短行程NA(<5)包围,应保留.
绘制要以红色删除的值:
library(ggplot2)
ggplot(data = df, aes(x, y)) +
geom_line() +
geom_line(data = df[55:59, ], color = "red")
Run Code Online (Sandbox Code Playgroud)
