[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つの列による重複を調べてその重複の数を表示する(2025.12.24)
- [R]tibbleから指定した一列を取り出してベクトルにする(2025.10.19)
- [R]tibbleを指定した列だけのtibbleに変換する(2025.10.14)
- [R]tibbleを指定した行だけのtibbleに変換する(2025.10.13)
- [R]tibbleの列名を得る(2025.07.17)
« [R]指定の列の値を基準にして2つのtibbleを結合する | トップページ | [C#]コマンドラインでコンパイルするときのソースファイルの文字コードの指定 »

コメント