Кредиты отправляются на @ericOss, anti_join - это самый простой способ
Пример данных
В следующий раз либо предоставьте свои данные (или создайте небольшой пример, как я):
library(zipcode)
data(zipcode)
# Data
df1 <- head(zipcode)
df2 <- head(zipcode)
# Remove some things
df2[2,1] <- 0000 #wrong zip
df2[4,3] <- 'FOO' # wrong stat
df1
zip city state latitude longitude
1 00210 Portsmouth NH 43.0059 -71.0132
2 00211 Portsmouth NH 43.0059 -71.0132
3 00212 Portsmouth NH 43.0059 -71.0132
4 00213 Portsmouth NH 43.0059 -71.0132
5 00214 Portsmouth NH 43.0059 -71.0132
6 00215 Portsmouth NH 43.0059 -71.0132
df2
zip city state latitude longitude
1 00210 Portsmouth NH 43.0059 -71.0132
2 0 Portsmouth NH 43.0059 -71.0132
3 00212 Portsmouth NH 43.0059 -71.0132
4 00213 Portsmouth FOO 43.0059 -71.0132
5 00214 Portsmouth NH 43.0059 -71.0132
6 00215 Portsmouth NH 43.0059 -71.0132
Anti_join
Затем вы можете использовать print(df2 %>% anti_join(df1))
, что даст вам:
zip city state latitude longitude
1 0 Portsmouth NH 43.0059 -71.0132
2 00213 Portsmouth FOO 43.0059 -71.0132
anti_join () вернет все строки из x, где в y нет совпадающих значений, сохраняя только столбцы из x.
(anti_join поставляется с dplyr
, установите его, используя install.packages("dplyr")
, если вы этого еще не сделали)