我知道的所有方面問題時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