normal_address() 函数未按预期工作

问题描述 投票:0回答:1

normal_address()
包中的
campfin
功能无法按我的预期工作。

我正在尝试使用这样的一段代码:

df <- df %>% mutate(clean_add = normal_address(RESERVATION_ADDRESS, abbs=usps_street))

我期待

usps_street$full
中包含的所有单词都被它的缩写所取代。大多数时候它都会这样做,但并非每次都如此。

这只是

normal_address()
的错误还是我遗漏了什么? 当我在后面的一步中尝试模糊匹配时,它会导致地址不匹配(即使当我查看它们时它们显然是相同的)。

以下是一些我无法正确标准化的地址:

structure(list(RESERVATION_ADDRESS = c("4620 ASH GROVE DRIVE #3B", 
"4001 DE MORADA DRIVE UNIT 118", "734 THOMPSON DRIVE, UNIT A", 
"5917 YORK BRIDGE CIRCLE, AUSTIN, TX", "4140 SUNLAND CIRCLE NW", 
"3951 BELLAIRE DRIVE SOUTH"), RESERVATION_CITY = c("SPRINGFIELD", 
"ODESSA", "LAKE DALLAS", "AUSTIN", "ALBUQUERQUE", "FORT WORTH"
), RESERVATION_STATE = c("IL", "TX", "TX", "TX", "NM", "TX"), 
    RESERVATION_ZIPCODE = c(62711, 79765, 75065, 78749, 87107, 
    76109)), row.names = c(NA, 6L), class = "data.frame")

我试图避免使用像 `gsub("CIRCLE", "CIR", clean_add) 这样的东西,因为除了 "CIRCLE" 或 "DRIVE" 之外,我可能还缺少更多实例。

有没有更好的函数可以做到这一点?或者我只是错过了什么?

r street-address
1个回答
0
投票

当前:

> tt$RESERVATION_ADDRESS
[1] "4620 ASH GROVE DRIVE #3B"            "4001 DE MORADA DRIVE UNIT 118"      
[3] "734 THOMPSON DRIVE, UNIT A"          "5917 YORK BRIDGE CIRCLE, AUSTIN, TX"
[5] "4140 SUNLAND CIRCLE NW"              "3951 BELLAIRE DRIVE SOUTH"   

可能会输出:

> normal_address(tt$RESERVATION_ADDRESS, abbs = usps_street, abb_end = FALSE)
[1] "4620 ASH GRV DR #3B"         "4001 DE MORADA DR UNIT 118"  "734 THOMPSON DR UNIT A"     
[4] "5917 YORK BRG CIR AUSTIN TX" "4140 SUNLAND CIR NW"         "3951 BELLAIRE DR S" 

意思是,你需要指定

abb_end = FALSE
。如果是这样,则更改为:

library(dplyr)
df = 
  df |> 
  mutate(clean_add = normal_address(RESERVATION_ADDRESS, abbs = usps_street, abb_end = FALSE))
© www.soinside.com 2019 - 2024. All rights reserved.