【发布时间】:2018-02-03 16:08:59
【问题描述】:
我知道关于filter multiple conditions 的所有问题都有非常全面的答案,例如Q1、Q2,甚至删除NA valuesQ3、@987654324 @。
但我有一个不同的问题,我如何使用dplyr 甚至data.table 函数来实现filter 以同时保留NA 值和conditional parameters?
作为下面的示例,我想保留Var3 中的所有值,即>5 PLUS NA values。
library(data.table)
library(dplyr)
Var1<- seq(1:5)
Var2<- c("s", "a", "d", NA, NA)
Var3<- c(NA, NA, 2, 5, 2)
Var4<- c(NA, 5, 1, 3,4)
DT <- data.table(Var1,Var2,Var3, Var4)
DT
Var1 Var2 Var3 Var4
1: 1 s NA NA
2: 2 a NA 5
3: 3 d 2 1
4: 4 NA 5 3
5: 5 NA 2 4
预期结果:
Var1 Var2 Var3 Var4
1: 1 s NA NA
2: 2 a NA 5
3: 3 d 2 1
4: 5 NA 2 4
我尝试了以下但不成功:
##Using dplyr::filter
DT %>% filter(!Var3 ==5)
Var1 Var2 Var3 Var4
1 3 d 2 1
2 5 <NA> 2 4
# or
DT %>% filter(Var3 <5 & is.na(Var3))
[1] Var1 Var2 Var3 Var4
<0 rows> (or 0-length row.names)
## using data.table
DT[DT[,.I[Var3 <5], Var1]$V1]
Var1 Var2 Var3 Var4
1: NA NA NA NA
2: NA NA NA NA
3: 3 d 2 1
4: 5 NA 2 4
非常感谢任何有关解释的帮助!
【问题讨论】:
标签: r dplyr data.table conditional na