Reputation: 6277
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
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
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