Объединение фрейма данных и таблицы поиска в r, сохранение всех записей из фрейма данных

75
4

У меня есть кадр данных 59720 об. что выглядит ниже. Я хочу назначить MARKETNAME для каждого наблюдения из справочной таблицы.

> data (a)

     DAY  HOUR LEAD Row.Count     DATE    ITIME  HOMEPHONE            CITY  STATE ZIPCODE     ZONENAME
1 Monday 13:00 1 9430 7/1/2013 13:42:51 FORT LAUDERDALE FL 33315 68
2 Monday 13:00 1 9432 7/1/2013 13:43:50 xxxxx9802x PLEASANT GROVE AL 35127 82
3 Monday 13:00 1 9434 7/1/2013 13:46:18 5xxxx85x10 ORO VALLEY AZ 85737 54
4 Monday 0:00 1 9435 7/1/2013 0:04:34 50xxxx1x364 SPOKANE WA 99204 211
5 Monday 11:00 1 9436 7/1/2013 11:45:43 951xxxxx20 RIVERSIDE CA 92507 31
6 Monday 11:00 1 9437 7/1/2013 11:46:26 760xxxxx679 VISTA CA 92081 539

У меня есть таблица поиска почтовых индексов с 43126 уникальными почтовыми индексами, которые выглядят следующим образом:

> data (b)

MARKETNAME            ZIPCODE
NEW YORK 00501
NEW YORK 00544
SPRINGFIELD-HOLYOKE 01001
SPRINGFIELD-HOLYOKE 01002
SPRINGFIELD-HOLYOKE 01003
SPRINGFIELD-HOLYOKE 01004

Я хотел просто присвоить MARKETNAME моему набору данных "a" сравнив ZIPCODE с "b". Поэтому я использовал

> c <- merge(a, b, by="ZIPCODE").

Он вернул 58 972 об. что означало, что я потерял 748 об. Я не хочу терять ни одной записи из, поэтому я изменил мой код выглядит следующим образом: a

> c <- merge (a, b, by = "ZIPCODE", all.x=TRUE).

Странно это вернуло 61 652 об. вместо моего ожидания, которое возвращало 59 720 об. в соответствии с исходным a кадре данных с некоторым NAS.

Согласно документации,

"если TRUE, то к выходу добавятся дополнительные строки, по одному для каждой строки в x, у которой нет соответствующей строки в y. Эти строки будут содержать NA в тех столбцах, которые обычно заполняются значениями из y. По умолчанию FALSE, так что в вывод включены только строки с данными из x и y ".

Моя интерпретация этого определенно неверна. Может кто-нибудь объяснить, что я делаю неправильно, и как я могу выполнить эту простую задачу?

Я ссылался: как объединить кадры данных и изменить значения элементов на основе определенных условий? , Подмножество и слияние из 2 связанных фреймов данных в r, как объединить два кадра данных неравного размера в R, но ни один из них не отличается от моей проблемы.

спросил(а) 2021-01-19T17:02:48+03:00 2 месяца, 3 недели назад
1
Решение
75

Я предпочитаю join plyr который по умолчанию является левым соединением, возвращающим все совпадения записей в первом кадре данных.

c <- join(a, b, by="ZIPCODE")

ответил(а) 2021-01-19T17:02:48+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема