dplyr过滤了数十列

时间:2018-01-03 23:39:52

标签: r dplyr

假设我有一个27列数据帧。第一列是ID,其余列(A到Z)只是数据。我想取出A到Z列为NA的所有行。我该怎么办? 直截了当的方式就是

data %>%
filter(!(is.na(A) & is.na(B) .... & is.na(Z)))

有更有效或更简单的方法吗?

此问题与This one不同,因为我想要排除值为ALL NA的行,并保留其值为部分NA的行。

1 个答案:

答案 0 :(得分:0)

使用library(tidyverse)

ID <- c(1:8)
Col1<-c(34564,NA,43456,NA,45655,6789,99999,87667)
Col2<-c(34565,43456,55555,NA,65433,22234,NA,98909)
Col3<-c(45673,88789,11123,NA,55676,76566,NA,NA)

mydf <- data_frame(ID,Col1,Col2,Col3)
mydf %>% 
    slice(which(complete.cases(.)))

加载数据:

mydf %>% 
    mutate(full_incomplete_cases=rowSums(is.na(.[-1]))) %>% 
    filter(full_incomplete_cases<length(mydf[,-1])) %>% 
    select(ID:Col3)

是否要保留选定的列,删除包含您可能运行的所有NA的行:

{{1}}