首页 > 解决方案 > R:用数字(1、2等)替换字符序数(第一、第二等)

问题描述

我有一些带有字符序号的地址字符串(第一,第二等等)。

x <- “第一银行街”

需要输出

“1条银行街”

任何帮助,将不胜感激。

标签: rgsubstringr

解决方案


只需编写一个辅助函数来为您完成它 - 尽管我想这取决于数字有多高。如果只有 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'

推荐阅读