Dplyr: anti_join を使用して一致しないレコードを検索する方法


R のdplyrパッケージのanti_join()関数を使用すると、別のデータ フレームに一致する値がないデータ フレーム内のすべての行を返すことができます。

この関数は次の基本構文を使用します。

 anti_join(df1, df2, by= ' col_name ')

次の例は、この構文を実際に使用する方法を示しています。

例 1: 列で anti_join() を使用する

R に次の 2 つのデータ フレームがあるとします。

 #create data frames
df1 <- data. frame (team=c('A', 'B', 'C', 'D', 'E'),
                  dots=c(12, 14, 19, 24, 36))

df2 <- data. frame (team=c('A', 'B', 'C', 'F', 'G'),
                  dots=c(12, 14, 19, 33, 17))

anti_join()関数を使用すると、2 番目のデータ フレームに一致するチームがない最初のデータ フレームのすべての行を返すことができます。

 library (dplyr)

#perform anti join using 'team' column
anti_join(df1, df2, by=' team ')

  team points
1 D 24
2 E 36

最初のデータ フレームには 2 つのチームがあり、2 番目のデータ フレームには一致するチーム名がないことがわかります。

例 2: 複数の列で anti_join() を使用する

R に次の 2 つのデータ フレームがあるとします。

 #create data frames
df1 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                  position=c('G', 'G', 'F', 'G', 'F', 'C'),
                  dots=c(12, 14, 19, 24, 36, 41))

df2 <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B'),
                  position=c('G', 'G', 'C', 'G', 'F', 'F'),
                  dots=c(12, 14, 19, 33, 17, 22))

anti_join()関数を使用すると、2 番目のデータ フレームに一致するチームポジションがない最初のデータ フレーム内のすべての行を返すことができます。

 library (dplyr)

#perform anti join using 'team' and 'position' columns
anti_join(df1, df2, by=c(' team ', ' position '))

  team position points
1 FY 19
2 BC 41

最初のデータ フレームには、2 番目のデータ フレームに一致するチーム名ポジションがないレコードが 2 つだけあることがわかります。

追加リソース

次のチュートリアルでは、dplyr で他の一般的な機能を実行する方法を説明します。

dplyrを使用してインデックスによって列を選択する方法
dplyr を使用して複数のデータ フレームを結合する方法
dplyrを使用して特定の文字列を含む行をフィルタリングする方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です