我知道的所有方面问题时filter multiple conditions
具有非常全面的解答,如Q1,Q2,甚至去除NA values
Q3,。dplyr:筛选多个条件与**选择NA值**
但是我有一个不同的问题,我怎样才能使用dplyr
甚至data.table
功能,以保持两者NA
值和conditional parameters
做filter
?
如下面我想保持所有值的Var3
这是>5
PLUSNA
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
与解释任何帮助,不胜感激!
是'Var3 <5 | is.na(Var3)'与Var3 <5&!is.na(Var3)|相同is.na(VAR3)'? – www
@ycw这将是相同的。在处理新手时,我有点谨慎 – akrun
感谢您的解释。处理“NA”时谨慎是一个好主意。 – www