gpt4 book ai didi

r - 在 r 中合并数据框和查找表,保留数据框中的所有记录

转载 作者:行者123 更新时间:2023-12-04 09:06:29 24 4
gpt4 key购买 nike

我有一个 59720 ob​​s 的数据框。看起来像下面。我想为查找表中的每个观察值分配一个 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 个 obs。这意味着我失去了 748 个 obs。我不想丢失任何来自 a 的记录所以我改变了我的代码如下:
> c <- merge (a, b, by = "ZIPCODE" , all.x=TRUE) .

奇怪的是,这返回了 61,652 个 obs。而不是我的期望返回 59,720 ob​​s。原件 a带有一些 NA 的数据框。

根据文档,

"if TRUE, then extra rows will be added to the output, one for each row in x that has no matching row in y. These rows will have NAs in those columns that are usually filled with values from y. The default is FALSE, so that only rows with data from both x and y are included in the output."



我对此的解释绝对是错误的。有人可以解释一下我做错了什么以及我如何完成这个简单的任务吗?

我提到: 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但他们都不是我的问题。

最佳答案

我更喜欢 join来自 plyr默认情况下,这是一个左连接,返回第一个数据框中记录的所有匹配项。
c <- join(a, b, by="ZIPCODE")

关于r - 在 r 中合并数据框和查找表,保留数据框中的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com