一列中的连续NAS [英] Consecutive NAs in a column

查看:5
本文介绍了一列中的连续NAS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要删除一列中连续NA个以上的行。

      [,1] [,2] 
[1,]    1    1   
[2,]   NA    1   
[3,]    2    4   
[4,]   NA    3   
[6,]    1    4   
[7,]   NA    8
[8,]   NA    5
[9,]   NA    6

所以我会有这个数据

      [,1] [,2] 
[1,]    1    1   
[2,]   NA    1   
[3,]    2    4   
[4,]   NA    3   
[6,]    1    4 

我做了一个研究,我尝试了这个代码

data[! rowSums(is.na(data)) >3  , ]

但我认为这只用于连续NAs。

推荐答案

如前所述,rle是一个很好的起点:

is.na.rle <- rle(is.na(data[, 1]))

因为Nas只有在三个或更多的时候才是"坏的",所以我们可以重写这些值:

is.na.rle$values <- is.na.rle$values & is.na.rle$lengths >= 3

最后,使用inverse.rle构建要过滤的索引向量:

data[!inverse.rle(is.na.rle), ]

这篇关于一列中的连续NAS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆