Допустим, у меня есть следующий фрейм данных:
df <- data.frame(address=c('654 Peachtree St','890 River Rd','890 River Rd','890 River Rd','1234 Main St','1234 Main St','567 1st Ave','567 1st Ave'), city=c('Atlanta','Eugene','Eugene','Eugene','Portland','Portland','Pittsburgh','Etna'), state=c('GA','OR','OR','OR','OR','OR','PA','PA'), zip5=c('30308','97404','97404','97404','97201','97201','15223','15223'), zip9=c('30308-1929','97404-3253','97404-3253','97404-3253','97201-5717','97201-5000','15223-2105','15223-2105'), stringsAsFactors = FALSE)
`address city state zip5 zip9
1 654 Peachtree St Atlanta GA 30308 30308-1929
2 8910 River Rd Eugene OR 97404 97404-3253
3 8910 River Rd Eugene OR 97404 97404-3253
4 8910 River Rd Eugene OR 97404 97404-3253
5 1234 Main St Portland OR 97201 97201-5717
6 1234 Main St Portland OR 97201 97201-5000
7 567 1st Ave Pittsburgh PA 15223 15223-2105
8 567 1st Ave Etna PA 15223 15223-2105`
Я считаю любые строки с совпадающим адресом и zip5 дублирующимися.
Фильтрация или сохранениедубликаты на основе этих двух столбцов достаточно просты в R. Что я пытаюсь сделать, это создать новый столбец с условной меткой для каждого набора дубликатов, заканчивающийся чем-то похожим на это:
`address city state zip5 zip9 type
1 8910 River Rd Eugene OR 97404 97404-3253 Exact Match
2 8910 River Rd Eugene OR 97404 97404-3253 Exact Match
3 8910 River Rd Eugene OR 97404 97404-3253 Exact Match
4 1234 Main St Portland OR 97201 97201-5717 Different Zip9
5 1234 Main St Portland OR 97201 97201-5000 Different Zip9
6 567 1st Ave Pittsburgh PA 15223 15223-2105 Different City
7 567 1st Ave Etna PA 15223 15223-2105 Different City`
(Я также подойдет для столбца True / False для каждого типа дубликатов.)
Я предполагаю, что решение будет в некотором булевом коде mutate + ifelse +, но я думаю, что это сравнение в каждом дублирующем подмножестве, в котором я застрял ...
Любой совет?
Редактировать: я не считаю, что это дубликат Найти дублированные строки(на основе 2 столбцов) в кадре данных в R . Я могу использовать это решение для создания столбца T / F для каждого типа совпадения / совпадения group_by, но я пытаюсь создать эксклюзивные категории. Как мои условия также могут учитывать различия? Строки с точным соответствием должны показывать true только в столбце «точное соответствие» и false для всех остальных столбцов. Если я определяю свои столбцы просто путем подачи различных комбинаций столбцов в group_by
, строки с точным соответствием никогда не вернут False.