概要
dplyr
パッケージに含まれるfilter(), slice()
は、条件と一致する行を取得する関数です。
# 論理式と一致する行を取得する
filter(.data, ..., .preserve = FALSE)
# 行番号と一致する行を取得する
slice(.data, ..., .preserve = FALSE)
引数 | 指定 | 説明 |
---|---|---|
.data | 必須 | テーブルを指定する |
… | 必須 | 取得する行の条件(論理式または行番号)を指定する |
.preserve | 任意 | グループ化構造を維持するか再計算するかを指定する デフォルト(FALSE)では再計算を行います |
関連ページ
具体例
## テーブルの作成
tbl <- tibble(
x1 = c('A', 'B', 'C'),
x2 = c(1, 2, 3),
)
## テーブルの確認
tbl
# x1 x2
# <chr> <dbl>
# A 1
# B 2
# C 3
## 1.論理式と一致する行を取得する
filter(tbl, x2 %% 2 == 1)
# x1 x2
# <chr> <dbl>
# A 1
# C 3
## 2-1.行番号と一致する行を取得する
slice(tbl, c(1, 3))
# x1 x2
# <chr> <dbl>
# A 1
# C 3
## 2-2.行番号と一致する行を取得する(補集合)
slice(tbl, -1)
# x1 x2
# <chr> <dbl>
# B 2
# C 3
## 3-1.グループ化構造を再計算する(デフォルトの挙動)
group_by(tbl, x1) %>%
filter(x2 %% 2 == 1, .preserve = FALSE) %>%
summarise(n = n())
# x1 n
# <chr> <dbl>
# A 1
# C 1
## 3-2.グループ化構造を維持する
group_by(tbl, x1) %>%
filter(x2 %% 2 == 1, .preserve = TRUE) %>%
summarise(n = n())
# x1 n
# <chr> <dbl>
# A 1
# B 0
# C 1