簡體   English   中英

根據整行使用dplyr / magrittr過濾行

[英]Filter rows with dplyr/magrittr based on entire row

一個可以使用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流程方式執行此操作?

您可以rowSums使用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,]

得到相同的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM