我期待基于两个条件,从我的数据集删除行如下:条件行切除
- 删除行,如果连续3个细胞
NA
或 - 如果四个或多种细胞是
NA
我的示例数据:
data <- rbind(c(1,1,2,3,4,2,3,2),
c(NA,1, NA, 4,1,1,NA,2),
c(1,4,6,7,3,1,2,2),
c(NA,3, NA, 1,NA,2,NA,NA),
c(1,4, NA, NA,NA,4,3,2))
我已经中存在的问题中的研究和发现,na.omit
或complete.cases
可以删除与NA
行,但因为我有状况,做进一步的研究,我已经找到了存在的问题中的以下代码:
data[! rowSums(is.na(data)) >4 , ]
data[! rowSums(is.na(data)) ==3 , ]
第一行充分填补我的第二个条件。第二行确实删除了三行NA
的行,但没有连续查找并删除总共有3行的NA
。例如:
> data
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 2 3 4 2 3 2
[2,] NA 1 NA 4 1 1 NA 2
[3,] 1 4 6 7 3 1 2 2
[4,] NA 3 NA 1 NA 2 NA NA
[5,] 1 4 NA NA NA 4 3 2
> data[! rowSums(is.na(data)) ==3 , ]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 2 3 4 2 3 2
[2,] 1 4 6 7 3 1 2 2
[3,] NA 3 NA 1 NA 2 NA NA
什么其实我想要的是第5行只删除,因为这已连续三年NA
的,而不是第二行。
任何人都可以请教我如何克服这个问题?
这真的符合我的目的,也将帮助我在未来应用其他条件!非常感谢!问候, – Achak 2013-03-03 14:52:07