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?
Spencer Varadi
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)
redmode
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)
来源:https://stackoverflow.com/questions/14028995/money-representation-in-r