当前位置:  开发笔记 > 编程语言 > 正文

使用基于整行的dplyr/magrittr过滤行

如何解决《使用基于整行的dplyr/magrittr过滤行》经验,为你挑选了1个好方法。

一个能够使用dplyr过滤行filter,但条件通常基于每行的特定列,例如

d <- data.frame(x=c(1,2,NA),y=c(3,NA,NA),z=c(NA,4,5))
d %>% filter(!is.na(y))

我想根据NA的数量是否大于50%来过滤行,例如

d %>% filter(mean(is.na(EACHROW)) < 0.5 )

我如何以dplyr/magrittr流方式执行此操作?



1> Jaap..:

你可以使用rowSumsrowMeans为此.提供数据的示例:

> d
   x  y  z
1  1  3 NA
2  2 NA  4
3 NA NA  5

# with rowSums:
d %>% filter(rowSums(is.na(.))/ncol(.) < 0.5)

# with rowMeans:
d %>% filter(rowMeans(is.na(.)) < 0.5)

两者都给:

  x  y  z
1 1  3 NA
2 2 NA  4

如您所见,从数据中删除了第3行.


在基地R,您可以这样做:

d[rowMeans(is.na(d)) < 0.5,]

得到相同的结果.

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有