« [R]指定の列の値を基準にして2つのtibbleを結合する | トップページ | [C#]コマンドラインでコンパイルするときのソースファイルの文字コードの指定 »

2024年2月13日 (火)

[R]特定の列の値を基準にして2つのtibbleが結合できるか否か確認する

tidyverse(dplyr)パッケージのsemi_join関数、anti_join関数を使う。基準とする列の指定にはjoin_by関数を使う。以下は、次の2つのtibbleを指定の列(以下の例ではcvとid)の値を基準にして結合できるか否か確認した例。簡潔な表示にするため、表示はすべてデータフレームで行っている。

> chara %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 ライザ ライザのアトリエ2 1 ynoguchi01
5 フィー ライザのアトリエ2 2 mwatada01
6 黒川あかね 推しの子 6 miwami01
> seiyu %>% as.data.frame()
id name
1 miwami01 石見舞菜香
2 kyuki01 優木かな
3 mwatada01 和多田美咲
4 machico01 Machico

semi_join関数は、右側に指定の列の値が一致する行がある左側の行を返す。inner_join関数と動作は似ているが、semi_join関数は、結合はせずに結合が可能な左側の行だけを返す。

> chara %>% inner_join(seiyu, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
5 黒川あかね 推しの子 6 miwami01 石見舞菜香
> chara %>% semi_join(seiyu, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv
1 ライスシャワー ウマ娘 30 miwami01
2 スーパークリーク ウマ娘 45 kyuki01
3 メイショウドトウ ウマ娘 58 mwatada01
4 フィー ライザのアトリエ2 2 mwatada01
5 黒川あかね 推しの子 6 miwami01

anti_join関数は、右側に指定の列の値が一致する行がない左側の行を返す。left_join関数では無理矢理結合され列にNAが代入された行(以下の4行目)だけが返されるが、anti_join関数は結合はせずに左側の行だけを返す。

> chara %>% left_join(seiyu, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv name
1 ライスシャワー ウマ娘 30 miwami01 石見舞菜香
2 スーパークリーク ウマ娘 45 kyuki01 優木かな
3 メイショウドトウ ウマ娘 58 mwatada01 和多田美咲
4 ライザ ライザのアトリエ2 1 ynoguchi01 <NA>
5 フィー ライザのアトリエ2 2 mwatada01 和多田美咲
6 黒川あかね 推しの子 6 miwami01 石見舞菜香
> chara %>% anti_join(seiyu, by = join_by(cv == id)) %>% as.data.frame()
nama title no cv
1 ライザ ライザのアトリエ2 1 ynoguchi01

« [R]指定の列の値を基準にして2つのtibbleを結合する | トップページ | [C#]コマンドラインでコンパイルするときのソースファイルの文字コードの指定 »

R(tidyverse)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]指定の列の値を基準にして2つのtibbleを結合する | トップページ | [C#]コマンドラインでコンパイルするときのソースファイルの文字コードの指定 »

無料ブログはココログ

■■

■■■