bschneidr
bschneidr

Reputation: 6277

Convert integer to words

For the purpose of styling data visualizations, I'd like to be able to display an integer using words (e.g.

"Two thousand and seventeen"

) rather than digits (e.g. 2017).

As an example of what I'm looking for, here's a quick function that works for a small, scalar integer:

int_to_words <- function(x) {

                   index <- as.integer(x) + 1
                   words <- c('zero', 'one', 'two', 'three', 'four',
                              'five', 'six', 'seven', 'eight', 'nine',
                              'ten')
                   words[index]
}


int_to_words(5)

Upvotes: 9

Views: 8706

Answers (2)

bschneidr
bschneidr

Reputation: 6277

Option 1:

Use the as.english function from the 'english' package:

library(english)

as.english(2017)


Option 2:

Use the replace_number function from the 'qdap' package.

library(qdap)

replace_number(2017)


Option 3:

Use the numbers_to_words function from the 'xfun' package.

library(xfun)

numbers_to_words(2017)

Upvotes: 31

Hack-R
Hack-R

Reputation: 23200

Asides from the function I linked in the comments, here's another solution from a GitHub gist:

source("https://gist.githubusercontent.com/hack-r/22104543e2151519c41a8f0ce042b31c/raw/01731f3176b4ee471785639533d38eda4790ab77/numbers2words.r")

numbers2words(0)

[1] "zero"

numbers2words(5)

[1] "five"

numbers2words(50000)

[1] "fifty thousand"

numbers2words(50000000000000)

[1] "fifty trillion"

Upvotes: 5

Related Questions