Money Representation in R

I would like to know how can I work with money with R. It means, do arithmetic, print well formatted numbers and etc.

For example I have some values

1.222.333,37 
1.223.444,88

I could translate it to numeric and round it, removing the cents, but there isn't a better pattern to work with? I did try the format method, something like:

format(141103177058,digits=3,small.interval=3,decimal.mark='.',small.mark=',')

but without success. any tip or ideas?

6

3 Answers

The scales package has a function for this: dollar_format()

install.packages("scales")
library(scales)

muchoBucks <- 15558.5985121
dollar_format()(muchoBucks)

[1] "$15,558.60"

What about this one:

printCurrency <- function(value, currency.sym="$", digits=2, sep=",", decimal=".") {
  paste(
        currency.sym,
        formatC(value, format = "f", big.mark = sep, digits=digits, decimal.mark=decimal),
        sep=""
  )
}

printCurrency(123123.334)
1

Suppose we have two specific character values (currency):

s1 <- "1.222.333,37"
s2 <- "1.223.444,88"

First of all we want R to display numeric values with proper number of digits:

# controls representation of numeric values
options(digits=10)

Converting currency to numeric can be implemented like this:

# where s is character
moneyToDouble <- function(s){
  as.double(gsub("[,]", ".", gsub("[.]", "", s)))
}

x <- moneyToDouble(s1) + moneyToDouble(s2)
x    

Printing numeric as currency:

# where x is numeric
printMoney <- function(x){
  format(x, digits=10, nsmall=2, decimal.mark=",", big.mark=".")
}

printMoney(x)
2

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest