R:将字符序号(第一个,第二个等)替换为数字(1、2等)

时间:2018-10-08 07:47:05

标签: r gsub stringr

我有一些地址字符串,其中包含字符序号(第一,第二等)。

  

x <-“第一银行街”

需要的输出

  

“ 1条银行街”

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

只需编写一个辅助函数即可为您完成此任务-尽管我猜这取决于数字的高低。如果只有1到10,那很容易。

毫无疑问,这是一种更优雅的方法,但这肯定可以解决您的基本问题。

address_string_replace <- function(x) {

  require(tidyverse)

  address_tbl <- tibble(number = 1:10,
                    text = c('first','second','third','fourth','fifth','sixth','seventh','eighth','ninth','tenth'))

  address_test <- 1:nrow(address_tbl)  

  tested_value <- tibble()

  for (i in address_test) {

    new_test <- tibble(test = ifelse(str_detect(x,address_tbl$text[i])==TRUE,address_test[i],0))

    tested_value <- bind_rows(tested_value,new_test)

  }

  tested_value <- tested_value %>%
    filter(!test == 0)

  value <- tested_value[['test']]

  address_fix <- address_tbl %>%
    filter(number == value)

  new_x <- gsub(address_fix$text,address_fix$number,x)

  return(new_x)

  }

然后您可以对其进行测试:

x1 <- 'first bank street'

address_string_replace(x1) #returns '1 bank street'

x2 <- 'second port avenue'

address_string_replace(x2) #returns '2 port avenue'
相关问题