地址正确时如何解决错误的邮政编码

时间:2019-07-08 12:24:47

标签: r duplicates

我正在清理一个包含公司地址和邮政编码的公司文件。

某些公司被多次添加,但是邮政编码不同。这可能是由人为错误引起的,但是使数据集的使用非常困难。

数据集看起来像这样:

Company  |  Adress        | Postal Code  
Company1 | Limestreet     | 4444ER  
Company1 | Limestreet     | 4445ER  
Company2 | Applestreet    | 3745BB 

我想检查哪些公司的邮政编码不同。由于公司名称的拼写通常也不同(也是人为错误),因此最好根据匹配的地址进行检查。

我尝试用tidyverse解决,但没有用。我的计划是查找所有错误的邮政编码并手动更正。但是,如果太多,我可能必须找到一种更有效的方法。因此,我不仅想问关于如何检测错误的建议,而且我想问关于如何在R中更正错误的建议。也许可以向我介绍一些好的软件包或描述如何解决该错误的页面? >

df2 <- df1 %>%  
    select(Adress PostalCode) %>%  
    group_by(Adress) %>%  
    summarise( n())  

创建数据集的模拟示例:

company <- c("company1", "company1", "company2", "company2", "company3")
Address <- c("Limestreet", "Limestreet", "Applestreet", "Applestreet", 
"Pearstreet")
Postal_code <- c("4444ER", "4445ER", "3745BB", "3745BC", "8743IJ")

trail_data <- data.frame(company, Address, Postal_code)

2 个答案:

答案 0 :(得分:0)

我认为您与您的代码很接近,但是我只想展示那些具有不同行的代码。这将向您显示要重点关注的内容。

trail_data %>%
  select(Address, Postal_code) %>%
  group_by(Address) %>%
  unique() %>%
  filter(n() > 1)

答案 1 :(得分:0)

我认为我们需要从您的数据库中获取更多信息才能获得最终答案,但是您可以通过编写一些代码来识别邮政编码,该代码在排序时是否存在差异。请注意,我又添加了一行数据(公司3),用作“非分散”实例。

我创建了一个名为same的新变量,如果公司名称和地址对任意两行都匹配,则该变量等于1,否则为0。您可以将此信息与其他数据(我们没有)一起使用,以确定哪个值可能是正确的。

company <- c("company1", "company1", "company2", "company2", "company3","company3")
Address <- c("Limestreet", "Limestreet", "Applestreet", "Applestreet", 
                                 "Pearstreet","Pearstreet")
Postal_code <- c("4444ER", "4445ER", "3745BB", "3745BC", "8743IJ","8743IJ")

trail_data <- data.frame(company, Address, Postal_code)

trail_data$same<-ifelse(trail_data$company==lag(trail_data$company, trail_data$Address==lag(trail_data$Address,1) &   trail_data$Postal_code!=lag(trail_data$Postal_code),0,1)