[`dplyr::filter()`](https://dplyr.tidyverse.org/reference/filter.html) 内で [`dplyr::between()`](https://dplyr.tidyverse.org/reference/between.html) 関数を使用することで、閉区間 (境界値を含む範囲) の指定をショートカットできる。これにより、比較演算子 (`>=`、`<=`) を組み合わせた条件よりもコードが読みやすくなり、記述量も削減される。
```r
# dplyr::between()を使用したショートカット記法
diamonds |>
filter(between(carat, 0.25, 0.30))
# 上記は以下と同じ結果
diamonds |>
filter(carat >= 0.25 & carat <= 0.30)
```
```
# A tibble: 3,630 × 10
carat cut color clarity depth table price x y z
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1 0.29 Premium I VS2 62.4 58 334 4.2 4.23 2.63
2 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
3 0.3 Good J SI1 64 55 339 4.25 4.28 2.73
4 0.3 Ideal I SI2 62 54 348 4.31 4.34 2.68
5 0.3 Good J SI1 63.4 54 351 4.23 4.29 2.7
6 0.3 Good J SI1 63.8 56 351 4.23 4.26 2.71
7 0.3 Very Good J SI1 62.7 59 351 4.21 4.27 2.66
8 0.3 Good I SI2 63.3 56 351 4.26 4.3 2.71
9 0.3 Very Good J VS2 62.2 57 357 4.28 4.3 2.67
10 0.26 Very Good D VS2 60.8 59 403 4.13 4.16 2.52
# ℹ 3,620 more rows
# ℹ Use `print(n = ...)` to see more rows
```
> [!note]
> 日付データに対しても `dplyr::between()` は有効で、特定の期間のデータを抽出する際に便利。
> [!warning]
> 順序ファクタデータに `dplyr::between()` は使用できない。
> dplyr::between() は、順序ファクタに対応していない
## 関連ノート
- **[前提]** [[dplyr の filter() で論理演算子を使用する]]: 本ノートの `between()` ショートカットは、この AND (`&`) 連結の冗長さを解消する書き換え
- **[深掘り]** [[dplyr の between() は、順序ファクタに対応していない]]: 本ノートで使う `between()` が、順序ファクタ型の列には想定通り動作しないという制約の解説