我的数据框为59720 obs。看起来像下面。我想从查找表中为每个观察分配一个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)
。
a
数据帧。
根据文档,
“如果为TRUE,那么额外的行将被添加到输出中,x中的每一行都有一行,y中没有匹配的行。这些行将在那些通常用y值填充的列中具有NA。默认情况下为FALSE,因此输出中只包含x和y数据的行。“
我对此的解释绝对是错误的。有人可以解释一下我做错了什么以及如何完成这个简单的任务?
我提到了:How to merge data frames and change element values based on certain conditions?,Subsetting and Merging from 2 Related Data Frames in r,how to merge two unequal size data frame in R,但它们都不类似于我的问题。
答案 0 :(得分:2)
我更喜欢来自join
的{{1}},默认情况下是左连接,返回第一个数据框中记录的所有匹配。
plyr