首页 > 解决方案 > 检测被 NaN/NA 模式包围的单个值

问题描述

我正在寻找一种模式来检测被 NA 或 NaN 包围的值。

我的数据如下所示:

c(1,2,3,NA,NaN,NA,6,9,10,NaN,NA,12,20,NA,NaN,12,NA,45,100,NA,200,NA,NaN,300)

我需要知道所有在 NA 或 NaN 之间的单个捕获值。

上述示例的结果将是:c(12, 200)

有什么优雅的想法吗?

标签: r

解决方案


使用laglead功能从dplyr你可以做 -

library(dplyr)

x[!is.na(x) & is.na(lag(x, default = 1)) & is.na(lead(x, default = 1))]
#[1]  12 200

这基本上返回了一个非 NA 值,它们被困在NA值之间。


推荐阅读