行の取得

概要

dplyrパッケージに含まれるfilter(), slice()は、条件と一致する行を取得する関数です。

1
2
3
4
5
# 論理式と一致する行を取得する
filter(.data, ..., .preserve = FALSE)
 
# 行番号と一致する行を取得する
slice(.data, ..., .preserve = FALSE)
引数指定説明
.data必須テーブルを指定する
必須取得する行の条件(論理式または行番号)を指定する
.preserve任意グループ化構造を維持するか再計算するかを指定する
デフォルト(FALSE)では再計算を行います

関連ページ

具体例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
## テーブルの作成
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
Sponsored Link