小编mrd*_*lar的帖子

删除由一定数量的NA包围的值

我希望删除时间序列中的值,这些值被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)

在此输入图像描述

r time-series missing-data

5
推荐指数
1
解决办法
143
查看次数

标签 统计

missing-data ×1

r ×1

time-series ×1