[`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()` が、順序ファクタ型の列には想定通り動作しないという制約の解説