Подтвердить что ты не робот

Представлять числовое значение с типичным размером суммы в долларах

У меня есть фрейм данных, хранящий сумму в долларах, это выглядит как

> a
  cost
1 1e+05
2 2e+05

Мне бы хотелось, чтобы это можно было показать как

> a  
  cost
1 $100,000
2 $200,000

Как это сделать в R?

4b9b3361

Ответ 1

DF <- data.frame(cost=c(1e4, 2e5))

#assign a class    
class(DF$cost) <- c("money", class(DF$cost))

#S3 print method for the class    
print.money <- function(x, ...) {
  print.default(paste0("$", formatC(as.numeric(x), format="f", digits=2, big.mark=",")))
}

#format method, which is necessary for formating in a data.frame   
format.money  <- function(x, ...) {
  paste0("$", formatC(as.numeric(x), format="f", digits=2, big.mark=","))
}

DF
#         cost
#1  $10,000.00
#2 $200,000.00

Ответ 2

Это даст вам все, кроме запятых:

> sprintf("$%.2f", seq(100,100000,by=10000)/7)
 [1] "$14.29"    "$1442.86"  "$2871.43"  "$4300.00"  "$5728.57"  "$7157.14"  "$8585.71"  "$10014.29" "$11442.86" "$12871.43"

Получение этих функций довольно сложно, как показано в этих вопросах:

К счастью, это реализовано в пакете весов:

library('scales')
> dollar_format()(c(100, 0.23, 1.456565, 2e3))
## [1] "$100.00"   "$0.23"     "$1.46"     "$2,000.00"
> dollar_format()(c(1:10 * 10))
## [1] "$10"  "$20"  "$30"  "$40"  "$50"  "$60"  "$70"  "$80"  "$90"  "$100"
> dollar(c(100, 0.23, 1.456565, 2e3))
## [1] "$100.00"   "$0.23"     "$1.46"     "$2,000.00"
> dollar(c(1:10 * 10))
## [1] "$10"  "$20"  "$30"  "$40"  "$50"  "$60"  "$70"  "$80"  "$90"  "$100"
> dollar(10^(1:8))
## [1] "$10"          "$100"         "$1,000"       "$10,000"      "$100,000"     "$1,000,000"   "$10,000,000"  "$100,000,000"

Ответ 3

Вы можете использовать функцию currency() из пакета formattable. Пример OP

a <- data.frame(cost = c(1e+05, 2e+05))
a
   cost
1 1e+05
2 2e+05
library(formattable)
a$cost <- currency(a$cost, digits = 0L)
a
      cost
1 $100,000
2 $200,000

По умолчанию отображаются две цифры после десятичной точки. Это было отменено с использованием параметра digits для удовлетворения ожиданий OP.

Признак formattable заключается в том, что числа по-прежнему являются числами даже с прикрепленным форматом, например,

a$cost2 <- 2 * a$cost
a
      cost    cost2
1 $100,000 $200,000
2 $200,000 $400,000