dat <-tibble(num =1:10,chr =c("a","a","b","b","c","c","c","a","b","c"))dat
# A tibble: 10 × 2
num chr
<int> <chr>
1 1 a
2 2 a
3 3 b
4 4 b
5 5 c
6 6 c
7 7 c
8 8 a
9 9 b
10 10 c
dat %>%filter(chr =="a")
# A tibble: 3 × 2
num chr
<int> <chr>
1 1 a
2 2 a
3 8 a
とすることによって文字列を条件づけて行をとりだすことができます。
ここで、aとcを取り出したい場合は、
dat %>%filter(chr ==c("a","c"))
# A tibble: 3 × 2
num chr
<int> <chr>
1 1 a
2 6 c
3 10 c
とすると実は誤っているので注意が必要です。なぜなら、
dat$chr : "a","a","b","b","c","c","c","a","b","c"
c("a","c"): "a","c","a","c","a","c","a","c","a","c",
T F F F F T F F F T
こんな感じで繰り返されたTRUE,FALSEが返ってくると解されるからです。
ここで、複数条件で絞り込む場合は、すこし特殊な、
dat %>%filter(chr %in%c("a","c"))
# A tibble: 7 × 2
num chr
<int> <chr>
1 1 a
2 2 a
3 5 c
4 6 c
5 7 c
6 8 a
7 10 c
%in% 記号というものを利用します。この記号を利用することで、
dat$chr : "a","a","b","b","c","c","c","a","b","c"
c("a","c"): "a","a","a","a","a","a","a","a","a","a"
"c","c","c","c","c","c","c","c","c","c"
T T F F T T F T F T
両方のどちらかと一致する形になります。もちろん、|演算子を利用して、
dat %>%filter(chr =="a"| chr =="c")
# A tibble: 7 × 2
num chr
<int> <chr>
1 1 a
2 2 a
3 5 c
4 6 c
5 7 c
6 8 a
7 10 c