Имею фрейм данных 59720 набл. как показано ниже. Я хочу присвоить ИМЯ РЫНКА каждому наблюдению из таблицы поиска.
> 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
Я хотел просто присвоить ИМЯ РЫНКА моему набору данных "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
фреймом данных с некоторыми НА.
Согласно документации,
"если ИСТИНА, то к выходным данным будут добавлены дополнительные строки, по одной для каждой строки в x, не имеющей соответствующей строки в y. Эти строки будут иметь NA в тех столбцах, которые обычно заполнены значениями из y. Значение по умолчанию - FALSE, так что в вывод включаются только строки с данными как от x, так и от y ".
Моя интерпретация этого совершенно неверна. Может кто-нибудь объяснить, что я делаю не так и как я могу выполнить эту простую задачу?
Я сослался на: Как объединить фреймы данных и изменить значения элементов в зависимости от определенных условий?, Подмножество и объединение двух связанных фреймов данных в r, как объединить два фрейма данных неравного размера в R, но ни один из них не похож на мою проблему.
b
. Отметьтеnrow(b) == length(unique(b$ZIPCODE))
. Если у вас естьnrow(b) > length(unique(b$ZIPCODE))
, то для каждой совпадающей пары ключей вы добавите несколько строк в ваш объединенный набор данных. - person ialm   schedule 01.08.2014strip.white = TRUE
при чтении данных с помощьюread.table
. - person talat   schedule 01.08.2014