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" 之外,我可能还缺少更多实例。
有没有更好的函数可以做到这一点?或者我只是错过了什么?
当前:
> 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))