Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 清洁地址-根据其他记录,在丢失的街道名称(Ave,St,…)中添加最后一个标记_R_Dplyr_Data Cleaning_Stringr - Fatal编程技术网

R 清洁地址-根据其他记录,在丢失的街道名称(Ave,St,…)中添加最后一个标记

R 清洁地址-根据其他记录,在丢失的街道名称(Ave,St,…)中添加最后一个标记,r,dplyr,data-cleaning,stringr,R,Dplyr,Data Cleaning,Stringr,在下面的示例数据中,一些地址缺少构成街道名称的最后一个“令牌”——ave、st、dr等。我正在使用OSM进行地理编码,我发现这些记录很受欢迎,但通常在其他一些国家。我想通过根据数据中的其他记录添加最可能丢失的令牌来进一步清理它们 valid_ends <- c("AVE", "ST", "EXT", "BLVD") data.frame(address = c("75 NEW PARK AVE&qu

在下面的示例数据中,一些地址缺少构成街道名称的最后一个“令牌”——ave、st、dr等。我正在使用OSM进行地理编码,我发现这些记录很受欢迎,但通常在其他一些国家。我想通过根据数据中的其他记录添加最可能丢失的令牌来进一步清理它们

valid_ends <- c("AVE", "ST", "EXT", "BLVD")

data.frame(address = c("75 NEW PARK AVE", "245 NEW PARK AVE", "42 NEW PARK",
                       "934 NEW PARK ST", "394 NEW PARK", "34 ASYLUM ST",
                       "42 ASYLUM", "953 ASYLUM AVE", "23 ASYLUM ST",
                       "65 WASHINGTON AVE EXT", "94 WASHINGTON AVE")) %>% 
    mutate(addr_tokens = str_split(address, " ")) %>%
    mutate(addr_fix = NA)

期望的结果:在上面添加了一个新的字符列addr_fix,它分别包含记录3、5、7 AVE、AVE、ST…的扩展地址。那些被扩充的是基于最后一个地址令牌没有包含在有效的_端点中而被扩充的。根据从数据集中的地址中删除数字第一个标记和有效的结束标记,添加到该街道最频繁出现的标记之后的标记匹配有点混乱,但这种方法应该有效:

首先获取核心地址-不带后缀的街道名称-并复制后缀/有效结束(如果有),以结束: 有效\u结束\u rgx% str_修剪%>% str_remove\\d+, end=str\u匹配地址,有效\u ends\u rgx[,1] df2 一个tibble:11 x 4 地址\u有效\u结束核心\u地址结束 175New PARK AVE TRUE NEW PARK AVE 新公园大道245号真新公园大道 3 42新公园假新公园NA 4934新公园街真新公园街 5394新公园假新公园NA 6 34庇护街真实庇护街 7 42庇护假庇护 庇护大道8953号真庇护大道 9 23庇护街真实庇护街 华盛顿大道10号65分路华盛顿大道 华盛顿大道11号94真华盛顿大道 查找每条街道最常见的有效结尾: 替换% 分组按核心地址,结束%>% 总结SEEND_ct=n%>% 组\u按核心\u地址%>% summarisemost\u end=end[哪个.maxend\u ct] 一个tibble:3x2 核心地址最末端 庇护街1号 新公园大道2号 华盛顿大街3号 根据“替换”中的most_end字段,更新缺少结尾的地址字段。 df2%>% 左接缝替换,by=core\u addr%>% 变化 地址=如果其他地址有效,地址,结构地址,most结尾,sep= 一个tibble:11x1 住址 新公园大道175号 新公园大道245号 3新公园大道42号 新园街4934号 新公园大道5394号 庇护街6 34号 庇护街7 42号 庇护大道8 953号 庇护街9号23 华盛顿大街10号65分机 华盛顿大道11号94
五星级回答,谢谢