使用データ
- データの指定を簡単にするために,penguinsデータを
df
と読み込む
- 読み込みの様々な方法については多くの説明が必要になるので,拙書『Rで読むExcelファイル』参照
df <-
palmerpenguins::penguins
# データの表示
df
## # A tibble: 344 × 8
## species island bill_length_mm bill_depth_mm flipper_length_mm
## <fct> <fct> <dbl> <dbl> <int>
## 1 Adelie Torgers… 39.1 18.7 181
## 2 Adelie Torgers… 39.5 17.4 186
## 3 Adelie Torgers… 40.3 18 195
## # ℹ 341 more rows
## # ℹ 3 more variables: body_mass_g <int>, sex <fct>, year <int>
基本
- 表示させたい変数名(列名)を
select()
の中に「,
」をつけて並べる
-
|>
についてはすでに1.7で説明したが,この後また補足を説明するのでまずは何も考えずに使ってみよう
- 以降すべて
tidyverse
パッケージを読み込んだ前提で進める(1.3参照)
## # A tibble: 344 × 2
## bill_length_mm bill_depth_mm
## <dbl> <dbl>
## 1 39.1 18.7
## 2 39.5 17.4
## 3 40.3 18
## # ℹ 341 more rows
- 新しいデータフレームを作りたい場合は
<-
を使って新しいオブジェクトに格納する
df2 <-
df |> select(bill_length_mm)
df2
## # A tibble: 344 × 1
## bill_length_mm
## <dbl>
## 1 39.1
## 2 39.5
## 3 40.3
## # ℹ 341 more rows
【補足】|> の意味
-
1.7で説明したパイプ演算子の実例を解説する
- 基本的に
select()
を始めとしたモダンなRの処理は,以下のように第一引数にデータフレームを指定する
## # A tibble: 344 × 1
## bill_length_mm
## <dbl>
## 1 39.1
## 2 39.5
## 3 40.3
## # ℹ 341 more rows
-
|>
の役割は,その左側にあるものを右側の関数の第一引数に入れる,ということなので,第一引数にデータフレームが来ることが決まっていれば,常に次のようにかける
## # A tibble: 344 × 1
## bill_length_mm
## <dbl>
## 1 39.1
## 2 39.5
## 3 40.3
## # ℹ 341 more rows
- 重要な点として,このコードの処理の結果もデータフレームとなるので,さらに
|>
でつなげていくことができる
## [1] "bill_length_mm"
- このようにすると複雑な処理を重ねていく場合も,コードの可読性が高まるので,コードを共有してチーム作業するデータ加工の過程で有用
範囲指定
- 表示させたい変数がデータフレーム上に順番に並んでいれば,その並びの最初の列名と最後の変数名を
:
(コロン)でつなげて取得できる
- 変数の連番をまとめて指定する時などに便利(例
設問1:設問100
)
df |>
select(bill_length_mm:flipper_length_mm)
## # A tibble: 344 × 3
## bill_length_mm bill_depth_mm flipper_length_mm
## <dbl> <dbl> <int>
## 1 39.1 18.7 181
## 2 39.5 17.4 186
## 3 40.3 18 195
## # ℹ 341 more rows
- 範囲に加えて追加の変数も「
,
」でつないで含めることができる
df |>
select(bill_length_mm:flipper_length_mm, sex)
## # A tibble: 344 × 4
## bill_length_mm bill_depth_mm flipper_length_mm sex
## <dbl> <dbl> <int> <fct>
## 1 39.1 18.7 181 male
## 2 39.5 17.4 186 female
## 3 40.3 18 195 female
## # ℹ 341 more rows
中身が文字でも動く
- 変数名が
" "
で囲われていると,Rでは文字(character)だと認識される
-
select()
は文字の変数名を与えても動く
df |>
select("bill_length_mm", "bill_depth_mm")
## # A tibble: 344 × 2
## bill_length_mm bill_depth_mm
## <dbl> <dbl>
## 1 39.1 18.7
## 2 39.5 17.4
## 3 40.3 18
## # ℹ 341 more rows
- これは効率化を図りたいときに重要な特徴
-
select()
の中にたくさんの変数名を並べるより,事前に指定しておきベクトルとして代入した方が読みやすい
- あらかじめ作成したベクトルとして代入するときは,
all_of()
で囲む必要がある
- 様々なコード例でこの事前指定が多用されるので慣れるとよい
# あらかじめオブジェクト(ここではvars)に変数名の文字列を格納して後で使えるようにする
vars <- c("bill_length_mm", "bill_depth_mm")
df |>
select(all_of(vars))
## # A tibble: 344 × 2
## bill_length_mm bill_depth_mm
## <dbl> <dbl>
## 1 39.1 18.7
## 2 39.5 17.4
## 3 40.3 18
## # ℹ 341 more rows
- ここで
vars
は文字ベクトル(vector)のオブジェクトとなっている(文字じゃないとエラーになるため)
-
all_of()
の中に文字ベクトルを指定することで,それぞれの中身を変数名として認識する
特定の変数を選ばない(落とす)
## # A tibble: 344 × 7
## island bill_length_mm bill_depth_mm flipper_length_mm
## <fct> <dbl> <dbl> <int>
## 1 Torgersen 39.1 18.7 181
## 2 Torgersen 39.5 17.4 186
## 3 Torgersen 40.3 18 195
## # ℹ 341 more rows
## # ℹ 3 more variables: body_mass_g <int>, sex <fct>, year <int>
- 複数列を落としたい場合は,
!c()
の中に対象の列名を含める
df |>
select(!c(bill_length_mm:flipper_length_mm, sex))
## # A tibble: 344 × 4
## species island body_mass_g year
## <fct> <fct> <int> <int>
## 1 Adelie Torgersen 3750 2007
## 2 Adelie Torgersen 3800 2007
## 3 Adelie Torgersen 3250 2007
## # ℹ 341 more rows
## # A tibble: 344 × 5
## species island body_mass_g sex year
## <fct> <fct> <int> <fct> <int>
## 1 Adelie Torgersen 3750 male 2007
## 2 Adelie Torgersen 3800 female 2007
## 3 Adelie Torgersen 3250 female 2007
## # ℹ 341 more rows
[練習問題]
- dfデータで”length”または”depth”を含む変数以外を選んでデータフレームを表示させよう