将数字格式化为dplyr中的货币?

问题描述

我希望将 报价美元 数字格式化为 dplyr 动词中的货币格式,不包括美分。四舍五入到最接近的美元。这是我到目前为止的代码及其输出。我怎样才能从一个数字(1000.5 到 1001 美元)获得报价美元?

$ ADD_PROD_DESC          <chr> NA,NA,"copper White 147-1472G","copper White~
$ Manufacturer_Model_NBR <chr> NA,"1404N42-00","147-1472G","147-1672G","14~
$ Call_For_Price         <chr> "FALSE","TRUE","FALSE","TRUE~
$ Quote_Dollars          <dbl> 1784781.3,1008000.0,746010.0,703822.5,646818.5,613302.3,560757.6,519990.0,~

解决方法

您可以使用包 scales

Quote_Dollars <- scales::dollard_format()(data$Quote_Dollars)

dollard_format 默认舍入到最接近的值。

,

您可以在 dplyr 管道中这样做。 但是您必须小心在最后一个管道中执行此操作,因为它/这些会将 numeric 转换为 string,并且您将无法对这些进行进一步的计算。

set.seed(123)
Quote_Dollars <- sample(7000:20000,5)/7
df <- data.frame(col1 = LETTERS[1:5],col2 = letters[6:10],Quote_Dollars = Quote_Dollars)
df
#>   col1 col2 Quote_Dollars
#> 1    A    f      1351.714
#> 2    B    g      1358.571
#> 3    C    h      2488.286
#> 4    D    i      2245.286
#> 5    E    j      2783.143
library(dplyr,warn.conflicts = F)
df %>% mutate(Quote_Dollars = paste0('$',round(Quote_Dollars,0)))
#>   col1 col2 Quote_Dollars
#> 1    A    f         $1352
#> 2    B    g         $1359
#> 3    C    h         $2488
#> 4    D    i         $2245
#> 5    E    j         $2783

正如 MonJeanJean 所建议的,这也应该有效。

df %>% mutate(Quote_Dollars = scales::dollar(Quote_Dollars,largest_with_cents = 0))
  col1 col2 Quote_Dollars
1    A    f        $1,352
2    B    g        $1,359
3    C    h        $2,488
4    D    i        $2,245
5    E    j        $2,783

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...