R の join() 関数:
データフレームの列を選択する
UBC/informatics/r/join
このページの最終更新日: 2024/09/30広告
概要: join() 関数とは
*_join と表されるように、inner_join, left_join など、いくつかの関数の総称である。いずれもデータの結合に使う。以下の関数と同様に、tidyverse パッケージ に含まれる関数である。
inner_join() 関数
データフレーム A と B があり、指定したカラムが共通している行のみを結合する。
組み込みデータセット mtcars を使って、実例を示してみよう。mtcars は、様々な車について、11 の項目が並ぶデータセットである。ここには 7 車種のみを示してあるが、実際には 32 行のデータである。
mpg というのは mile per gallon で、ガソリン 1 ガロンあたり何マイル走れるかという値。日本で使われている単位なら、km/L に相当する。この値が低いほど、燃費がよいことになる。
どうせ買うなら日本車が良いと思い、以下のスクリプトで「日本車の値段リスト」を作ってみた。
mtcars からこの 4 車種のみを抽出したい。mtcars には値段の情報はないので、model を基準にして抽出することになる。
このようにデータが組み合わされた。もとの 2 つのデータに存在した model という列は、完全に合一され 1 列となる。次に来るのは price 列で、これは join で Japanese_cars が左にあるため。その右に mtcars のその他のデータが並ぶ。
大きなデータを扱うときに、便利なことが多いだろう。
left_join() 関数
inner_join() が、2 つのデータフレームにおいて指定したカラムが共通している行のみを結合するのに対し、left_join() は左側のデータフレームにある行を保存しつつ結合する。
上と同じデータで実例を示す。ただし、mtcars2 が左側に来ていることに注意。
結果の一部だけを載せている。まず、mtcars2 の model が保存されるので、結果は 32 行のデータとなる。Japanese_car が左に来ていたら、inner_join の結果と同じになる (4 つの車種は全て mtcars に含まれているので)。
price は一番右に来て、price の情報がない車では NA となる。
広告
References
- このページ に詳細あり。
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。