首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中检查城市与邮政编码的对应关系

在R中检查城市与邮政编码的对应关系
EN

Stack Overflow用户
提问于 2017-06-06 15:17:34
回答 1查看 45关注 0票数 0

我有一个有地址的数据库(df)和一个法国所有现有邮政编码的数据库(cp)。根据邮政编码数据库,我试图检查df中的邮政编码/城市夫妇是否正确。

我面临的主要问题是数据的多到多关系。基本上,一个城市可以有多个邮政编码,不同的城市可以在同一个邮政编码区域。例如,这些城市造成了一个问题:

代码语言:javascript
运行
复制
        cp$city      cp$postcode
AIX EN PROVENCE            13080
AIX EN PROVENCE            13090
AIX EN PROVENCE            13100
AIX EN PROVENCE            13290
AIX EN PROVENCE            13540
BEAURECUEIL                13100
ST MARC JAUMEGARDE         13100
LE THOLONET                13100

如您所见,有五个不同的邮政编码,13100覆盖四个不同的城市。

我一直在尝试下面的代码,以确定一对夫妇是否正确:

代码语言:javascript
运行
复制
df$city == cp$city[match(df$postcode, cp$postcode)]

但这对夫妇13100 LE THOLONET是假的。我非常肯定,如果每个城市都有一个代码,并且每个代码都匹配一个城市,那么这段代码就可以了。我能做些什么来调整它以适应多到多的基数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-06 15:44:03

你也许可以试试这样的方法:

代码语言:javascript
运行
复制
cp = data.frame(city=c(rep("AIX EN PROVENCE",5),"BEAURECUEIL","ST MARC JAUMEGARDE","LE THOLONET"),postcode=c(13080,13090,13100,13290,13540,13100,13100,13100))
df = data.frame(city=c(rep("AIX EN PROVENCE",4),"BEAURECUEIL","LE THOLONET","PARIS","MARSEILLE"),postcode=c(13080,13090,13100,13540,13100,13100,75014,13001))


df$correct<-paste0(df$city,df$postcode) %in% paste0(cp$city,cp$postcode)

>df
             city postcode correct
1 AIX EN PROVENCE    13080    TRUE
2 AIX EN PROVENCE    13090    TRUE
3 AIX EN PROVENCE    13100    TRUE
4 AIX EN PROVENCE    13540    TRUE
5     BEAURECUEIL    13100    TRUE
6     LE THOLONET    13100    TRUE
7           PARIS    75014   FALSE
8       MARSEILLE    13001   FALSE
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44393869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档