无法过滤下面的逻辑列。想检查是否有过滤的方法。如果我根据 false 进行过滤,则 NA 行将变为全部 NA。我需要带有 NA 但在其他列中有值的行?
asd <- data.frame(Cat = c("A","B","B","A","B","A"), Start_num = c(2, 5, 1, 6, 6, 4), End_num = c(3, 7, 4, 7, 8, 5))
new <- asd %>% arrange(Cat,Start_num) %>%
group_by(Cat) %>%
mutate(Var=lead(Start_num)>End_num)
new <- as.data.frame(new)
new[new$Var != FALSE,]
Cat Start_num End_num Var
1 A 2 3 TRUE
2 A 4 5 TRUE
NA <NA> NA NA NA
4 B 1 4 TRUE
NA.1 <NA> NA NA NA
```
答案 0 :(得分:0)
如果您想对 TRUE
值进行子集化但也有 NA
值,则需要对 NA
和 TRUE
进行子集化:
new[!is.na(new$Var) & new$Var == TRUE,]
# A tibble: 3 x 4
# Groups: Cat [2]
Cat Start_num End_num Var
<chr> <dbl> <dbl> <lgl>
1 A 2 3 TRUE
2 A 4 5 TRUE
3 B 1 4 TRUE
答案 1 :(得分:0)
为什么不使用 %in%
?
new[new$Var %in% TRUE, ]
# Cat Start_num End_num Var
# 1 A 2 3 TRUE
# 2 A 4 5 TRUE
# 4 B 1 4 TRUE