R 如何使用NLP/字符串操作对州/城市/外部位置的多列重新编码

R 如何使用NLP/字符串操作对州/城市/外部位置的多列重新编码,r,nlp,levenshtein-distance,grepl,stringdist,R,Nlp,Levenshtein Distance,Grepl,Stringdist,非常感谢您的帮助 我有一些非常肮脏的数据,我正试图清理。在R中寻找能够正确识别是否有国外旅行的优雅解决方案(TRUE=国外旅行,FALSE=国内/美国旅行) 数据有几个问题,包括:-州都是缩写格式和非缩写格式-拼写错误-格式不同(即仅州、市逗号州、市斜线州等)-州/国家下的数据可能包含城市,而不是州/国家,城市列的数据可能包含州/国家,反之亦然 在“国外旅行”列下,解决方案应覆盖,以便如果州/国家或城市列指示国外旅行,则将其编码为TRUE,否则为FALSE `State/Country`

非常感谢您的帮助

我有一些非常肮脏的数据,我正试图清理。在R中寻找能够正确识别是否有国外旅行的优雅解决方案(TRUE=国外旅行,FALSE=国内/美国旅行)

数据有几个问题,包括:-州都是缩写格式和非缩写格式-拼写错误-格式不同(即仅州、市逗号州、市斜线州等)-州/国家下的数据可能包含城市,而不是州/国家,城市列的数据可能包含州/国家,反之亦然

在“国外旅行”列下,解决方案应覆盖,以便如果州/国家或城市列指示国外旅行,则将其编码为TRUE,否则为FALSE

   `State/Country`          `Foreign Travel`                   City         
    <chr>                            <lgl>                    <chr>        
   1 CA                                FALSE             San Francisco
   2 California                        FALSE             San Francisco
   3 British Columbia, Canada          TRUE              Vancouver    
   4 Florida                            NA               Hollywood    
   5 TX                                 NA               Dallas       
   6 Florda                             NA               Orlando 
   7 FL/CA                              NA               Orlando, Sacramennto 
   8 bufalo                             NA               NY
   9 d.c                               FALSE             washington dc
   10 frt wort, tx                     FALSE             texass
   11 frt wort, tx                     FALSE             texass
   12 japan                            NA                japan
   13 W?rzburg                         FALSE             german
`State/Country``Foreign Travel`城市
1 CA假旧金山
2加利福尼亚假旧金山
3加拿大不列颠哥伦比亚省真正的温哥华
佛罗里达州好莱坞
达拉斯德克萨斯州5号
奥兰多弗洛达酒店
加利福尼亚州萨克拉门托市奥兰多7楼
纽约布法罗8号
华盛顿特区9号
10第一吨麦汁,德克萨斯州假特萨斯州
11第一批麦汁,德克萨斯州假特萨斯州
12日本NA日本
13 W?rzburg假德语
现在,我有一些非常不整洁的代码,查看每一列,如果找到它,则给出一个真/假,如果为真(找到一个国内项目),则至少有一列由国外t/f列重新编码为假(无国外旅行):

##为nas添加一些行

no_entry尝试用字符串查询google maps api,看看它返回哪个国家?我认为这不适合stackoverflow,因为这不是一个真正的编程问题,但更多的是关于启发式数据清理。以下是美国城市常见的拼写错误。。。
 ##add some lines for nas
 no_entry <- c("na",".","","n/a","none")
  ##Maps package
 cities<- world.cities

 USAcities <- cities %>%
    filter(country.etc == 'USA')

   USAcities <- c(USAcities, 'williamsburg')

  USAcities <-tolower(USAcities$name)
 USA_fullState<- tolower(USA_fullState)
 USA_stateABR<- tolower(USA_stateABR)
 Travel_df_limited$State.Country<- tolower(Travel_df_limited$State.Country)


     Travel_df_limited$ForeignTravel_rc1 <- 
    c(rep(0,length(Travel_df_limited$Foreign.Travel)))

   i<-1
   for (i in 1:length(USA_fullState)){
   Travel_df_limited <- Travel_df_limited %>%
    mutate(ForeignTravel_rc1 = 
    ifelse(grepl(USA_fullState[i],Travel_df_limited$State.Country) == 
    "TRUE","FALSE",Travel_df_limited$ForeignTravel_rc1 ))
     i<- i+1}

  Travel_df_limited$ForeignTravel_rc1

   Travel_df_limited <- Travel_df_limited %>%
    mutate(ForeignTravel_rc2 = ifelse(Travel_df_limited$State.Country%in% 
    USA_stateABR== "TRUE","FALSE","TRUE"))


 Travel_df_limited$ForeignTravel_rc3 <- 
    c(rep(0,length(Travel_df_limited$Foreign.Travel)))

   i<-1
 for (i in 1:length(USAcities)){
   Travel_df_limited <- Travel_df_limited %>%
    mutate(ForeignTravel_rc3 = 
     ifelse(grepl(USAcities[i],Travel_df_limited$State.Country) == 
    "TRUE","FALSE",Travel_df_limited$ForeignTravel_rc3))
     i<- i+1}


     Travel_df_limited <- Travel_df_limited %>%
     mutate(ForeignTravel_rc = ifelse(Travel_df_limited$ForeignTravel_rc1 == 
      "FALSE" |   Travel_df_limited$ForeignTravel_rc2 == "FALSE"|
                                 Travel_df_limited$ForeignTravel_rc3 == 
          "FALSE" , "FALSE",
             ifelse(Travel_df_limited$State.Country%in% 
               c("na",".","","n/a","none") =="TRUE","FALSE", "TRUE")))



      Travel_df_limited<- subset(Travel_df_limited, select = - 
       c(ForeignTravel_rc1,ForeignTravel_rc2,ForeignTravel_rc3))