Dplyr: jak używać anti_join do znajdowania niedopasowanych rekordów
Możesz użyć funkcji anti_join() z pakietu dplyr w R, aby zwrócić wszystkie wiersze w ramce danych, które nie mają pasujących wartości w innej ramce danych.
Ta funkcja wykorzystuje następującą podstawową składnię:
anti_join(df1, df2, by= ' col_name ')
Poniższe przykłady pokazują, jak używać tej składni w praktyce.
Przykład 1: Użyj anti_join() z kolumną
Załóżmy, że mamy w R następujące dwie ramki danych:
#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))
Możemy użyć funkcji anti_join() , aby zwrócić wszystkie wiersze w pierwszej ramce danych, które nie mają pasującego zespołu w drugiej ramce danych:
library (dplyr) #perform anti join using 'team' column anti_join(df1, df2, by=' team ') team points 1 D 24 2 E 36
Widzimy, że istnieją dokładnie dwa zespoły z pierwszej ramki danych, które nie mają pasującej nazwy zespołu w drugiej ramce danych.
Przykład 2: Użyj funkcji anti_join() z wieloma kolumnami
Załóżmy, że mamy w R następujące dwie ramki danych:
#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))
Możemy użyć funkcji anti_join() , aby zwrócić wszystkie wiersze w pierwszej ramce danych, które nie mają pasującego zespołu i pozycji w drugiej ramce danych:
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
Widzimy, że w pierwszej ramce danych znajdują się dokładnie dwa rekordy, które nie mają pasującej nazwy zespołu i pozycji w drugiej ramce danych.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w dplyr:
Jak wybrać kolumny według indeksu za pomocą dplyr
Jak połączyć wiele ramek danych za pomocą dplyr
Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr