Нахождение и преобразование всех чисел в соответствующие им имена в R - PullRequest
0 голосов
/ 25 марта 2020

У меня есть один столбец данных, где каждая строка является оператором. Выражения в основном состоят из букв, но есть несколько цифр c. Я пытаюсь найти все числовые символы c и заменить их соответствующими буквенными символами.

В принципе, я хочу go из этого

 "I looked at the watermelons around 12 today"
 "There is a dog on the bench"
 "the year is 2017"
 "I am not hungry"
 "He turned 1 today"

в (или что-то похожее)

 "I looked at the watermelons around twelve today"
 "There is a dog on the bench"
 "the year is two thousand seventeen"
 "I am not hungry"
 "He turned one today"

Есть функции, с которыми я знаком в этом повороте переводит числа в слова, например, функцию numbers_to_words из пакета xfun, но я не знаю, как это делать систематически для всего фрейма данных.

Ответы [ 2 ]

2 голосов
/ 25 марта 2020

Вот один подход с пакетами stringr и english.

library(stringr)
library(english)
data<-  c("I looked at the watermelons around 12 today", "There is a dog on the bench", "the year is 2017", "I am not hungry", "He turned 1 today")
Replacement <-  lapply(str_extract_all(data,"[0-9]+"),function(x){
                   as.character(as.english(as.numeric(x)))})

sapply(seq_along(data),
       function(i){
         ifelse(grepl('[0-9]+',data[i]),
                str_replace_all(data[i],"[0-9]+",Replacement[[i]]),
                data[i])})
[1] "I looked at the watermelons around twelve today" "There is a dog on the bench"                    
[3] "the year is two thousand seventeen"              "I am not hungry"                                
[5] "He turned one today"  

0 голосов
/ 25 марта 2020

На самом деле я не знаю простой функции или чего-то подобного, но у меня есть, возможно, немного плохое решение для вас:

library(xfun)
a <- "I looked at the watermelons around 12 today"        
y <- numeric(nchar(a))        
for(i in 1:nchar(a))        
{        
  y[i]<-as.numeric(substr(a,i,i))        
}        
x <- n2w(as.numeric(paste(na.omit(y), collapse="")))        
z <- which(y != "NA")        
paste(c(substr(a, 1, z[1]-1), x, substr(a, z[length(z)] + 1, nchar(a))), collapse = "")

, и на данный момент оно работает только для одного числа в одном предложении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...