首页 > 解决方案 > 将 R 数据表 (DT) 列格式化为货币以及百万/千

问题描述

我正在使用 DT 包的渲染函数来显示数据表。我想将一些列显示为美元金额,但也以百万为单位。使用下面给出的代码,我可以将预期的第 3 列到第 5 列转换为美元金额货币。

有没有办法添加另一种格式,以便我们将值视为 $1.01 M 而不是 $1,012,310.23 ?

output$my.summary<-DT::renderDataTable({
    DT::datatable(my.summary()) %>% 
        formatCurrency(c(3:5),digits=2)
  })

my.summary只是来自反应组件的数据表,我想尽可能重用对象而不是修改源中的任何内容(例如,除以 1e-06 并添加M到末尾)

非常感谢我可以在上面的块中使用的简单解决方案!谢谢!

标签: rshinyshinydashboardshiny-server

解决方案


这个问题已经回答了:Format number into K(thousand), M(million) in Shiny DataTables

因此,使用:

formatThousands <- JS(
  "function(data) {",
  "return '$' + (data / 1000).toFixed(1) + 'K'",
  "}")

mtcars %>% 
  datatable(options = list(
    columnDefs = list(list(
      targets = c(3), render = formatThousands
    ))
  ))

或者没有 JavaScript,你可以试试这个:

mtcars %>% 
  mutate(disp = disp/1000) %>% 
  DT::datatable() %>% 
  DT::formatString(c(3), prefix = "$", suffix = "K")

您没有通过引用编辑任何内容,原始数据集通过magrittr管道运算符保持不变


推荐阅读