R: Заменить порядковые номера символов (первый, второй и т. Д.) На просто номер (1, 2 и т. Д.) - PullRequest
0 голосов
/ 08 октября 2018

У меня есть несколько строк адресов с порядковыми номерами символов (первое, второе и т. Д.).

x <- "улица первого банка" </p>

Требуется вывод

"1 Bank Street"

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 08 октября 2018

Просто напишите вспомогательную функцию, чтобы сделать это для вас - хотя я думаю, это зависит от того, насколько высокими будут цифры.Если это только от 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'
...