【问题标题】:Format number into K(thousand), M(million) in Shiny DataTables在 Shiny DataTables 中将数字格式化为 K(千)、M(百万)
【发布时间】:2017-10-10 00:18:19
【问题描述】:

我正在寻找一种直接的方法来将数字格式更改为闪亮数据表中的 K、M。最好使用 formatCurrency 之类的东西。我不想编写 k,m 函数将数字转换为字符串以进行格式化,因为它很难按值对行进行排序。

【问题讨论】:

    标签: r shiny number-formatting dt


    【解决方案1】:

    没有内置的方法可以做到这一点,但是用 JavaScript 编写自己的格式函数并不会破坏行排序也不错。

    请参阅 DT 文档中的 Column Rendering 了解如何执行此操作:https://rstudio.github.io/DT/options.html

    这也将有所帮助: https://datatables.net/reference/option/columns.render

    这是一个自定义千位格式化程序的示例,它四舍五入到小数点后 1 位:

    library(DT)
    
    formatThousands <- JS(
      "function(data) {",
      "return (data / 1000).toFixed(1) + 'K'",
      "}")
    
    datatable(datasets::rock, rownames = FALSE, options = list(
      columnDefs = list(list(
        targets = 0:1, render = formatThousands
      ))
    ))
    

    【讨论】:

      【解决方案2】:

      或者,如果你想要一个非 JavaScript 方法,你可以使用与 reactable 包一起使用的 colFormat 函数。不幸的是,没有自动数百万选项,但如果您划分原始数据并使用 colFormat 添加标签,则很容易复制。

      Product <- c('Apples','Oranges','Pears')
      Revenue <- c(212384903, 23438872, 26443879)
      df <- data.frame(Product,Revenue)
      
      df$Revenue_millions <- dfeg$Revenue/1000000
      
      reactable(df,
        showSortable = TRUE,
        columns = list(
        Revenue_millions = colDef(format = colFormat(prefix = "£", separators = TRUE,digits=1,suffix = "m"))))
      

      数据现在应该正确排序

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-11
        • 2023-04-05
        • 2019-11-28
        • 2021-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多