R の select 関数: 2 つのデータフレームで共通する列を抽出する
UBC/informatics/r/select_common
このページの最終更新日: 2024/09/30広告
2 つのデータフレームで共通する列を抽出する
mtcars を例にする。mtcar は以下のようなデータセットで、mpg, cyl... などのデータが列に納められている。
まず、ここから 2 つのサブデータセットを作ってみよう。mtcars_1 というデータセットには mpg, cyl, disp, hp の列があり、mtcars_2 には mpg, cyl, disp があるようにする。
mtcars2 = select(mtcars, c("mpg, cyl, disp"))
mtcars_1 と mtcars_2 に
もちろん、データの中身を見て select(mtcars_1, -hp) でも良いのだが、これだと大きなデータセットには対応できない。列名を手打ちせずに、全て関数でやる方法をマスターしておくとよい。
これは、one_of という関数を使ってやることもでき、実はこの方が応用の範囲が広い。こちらで覚えておく方が良さそうだ。
select(mtcars_1, one_of(A)) # ベクターに含まれるものを選ぶ
one_of を入れると、「ベクターのどれかひとつ」が概要すれば select 関数が動くようになる。mtcars_2 ではなく、もとの mtcars を使ってみると違いがわかる。
D = select(mtcars_1, one_of(C))
B は エラーになる。
! Can't subset columns that don't exist.
✖ Columns `drat`, `wt`, `qsec`, `vs`, `am`, etc. don't exist.
drat, wt... などの列が見つからず、select 関数が実行されないので、そもそも B というオブジェクトが生成されない。
一方、C と D のように one_of を使うと、C のベクターのいずれかが mtcars_1 に存在すれば、select 関数は実行される。以下のようなメッセージが出るが、オブジェクト D は生成される。
Unknown columns: `drat`, `wt`, `qsec`, `vs`, `am`, `gear`, `carb`
広告
References
- 列の選択 - select関数. Link: Last access 2022/05/24.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。