> library(tidyverse)
> a <- tibble(sample = c(1,2,3), country = c(NA, "CHN", "AUT"), age = c(21,22,23))
> a[a$country=="CHN",]
# A tibble: 2 × 3
sample country age
<dbl> <chr> <dbl>
1 NA NA NA
2 2 CHN 22
> a[a$country=="CHN" & !is.na(a$country),]
# A tibble: 1 × 3
sample country age
<dbl> <chr> <dbl>
1 2 CHN 22
实例如上所示,dataset a 如下
> a
# A tibble: 3 × 3
sample country age
<dbl> <chr> <dbl>
1 1 NA 21
2 2 CHN 22
3 3 AUT 23
可以看到country缺失,如果直接a[a$country=="CHN",]会把空值也提取出来,时刻记得check是否这列有空值。或者可以用dplyr的filter不会有这种问题。
> filter(a, country == "CHN")
# A tibble: 1 × 3
sample country age
<dbl> <chr> <dbl>
1 2 CHN 22