Dplyr: anti_join을 사용하여 일치하지 않는 레코드를 찾는 방법


R의 dplyr 패키지에 있는 anti_join() 함수를 사용하면 다른 데이터 프레임에 일치하는 값이 없는 데이터 프레임의 모든 행을 반환할 수 있습니다.

이 함수는 다음 기본 구문을 사용합니다.

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

다음 예에서는 이 구문을 실제로 사용하는 방법을 보여줍니다.

예 1: 열과 함께 anti_join() 사용

R에 다음과 같은 두 개의 데이터 프레임이 있다고 가정합니다.

 #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() 함수를 사용하여 두 번째 데이터 프레임에 일치하는 팀이 없는 첫 번째 데이터 프레임의 모든 행을 반환할 수 있습니다.

 library (dplyr)

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

  team points
1 D 24
2 E 36

첫 번째 데이터 프레임에는 정확히 두 팀이 있지만 두 번째 데이터 프레임에는 일치하는 팀 이름이 없는 것을 볼 수 있습니다.

예 2: 여러 열에 anti_join() 사용

R에 다음과 같은 두 개의 데이터 프레임이 있다고 가정합니다.

 #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() 함수를 사용하여 두 번째 데이터 프레임에 일치하는 팀 위치가 없는 첫 번째 데이터 프레임의 모든 행을 반환할 수 있습니다.

 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

첫 번째 데이터 프레임에는 정확히 두 개의 레코드가 있지만 두 번째 데이터 프레임에는 팀 이름 위치가 일치하지 않는 것을 볼 수 있습니다.

추가 리소스

다음 튜토리얼에서는 dplyr에서 다른 일반적인 기능을 수행하는 방법을 설명합니다.

dplyr을 사용하여 인덱스로 열을 선택하는 방법
dplyr을 사용하여 여러 데이터 프레임을 결합하는 방법
dplyr을 사용하여 특정 문자열이 포함된 행을 필터링하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다