【问题标题】:Format a number 1000 as 1k, 1000000 as 1m etc. in R [duplicate]在R中将数字1000格式化为1k,将1000000格式化为1m等[重复]
【发布时间】:2019-08-20 14:36:03
【问题描述】:

我需要使用这样的缩写来显示数字

1 shows as 1
999 shows as 999
1000 shows as 1K
999000 shows as 999K
1000000 shows as 1M
1500000 shows as 1.5M
1000000000 shows as 1G
etc...

我已经看到过 stackoverflow 上针对其他语言提出的问题(对于 Javascript 至少三次):

Format a javascript number with a Metric Prefix like 1.5K, 1M, 1G, etc

Format a number as 2.5K if a thousand or more, otherwise 900

How to format numbers similar to Stack Overflow reputation format

1000000 to 1M and 1000 to 1K in oracle query

1000 to 1k, 1000000 to 1m etc. number abbreviation

...但我无法为 R 找到任何东西。我错过了什么吗?

【问题讨论】:

    标签: r number-formatting


    【解决方案1】:

    使用dplyr::case_when

    so_formatter <- function(x) {
      dplyr::case_when(
          x < 1e3 ~ as.character(x),
          x < 1e6 ~ paste0(as.character(x/1e3), "K"),
          x < 1e9 ~ paste0(as.character(x/1e6), "M"),
          TRUE ~ "To be implemented..."
      )
    }
    
    test <- c(1, 999, 1000, 999000, 1000000, 1500000, 1000000000, 100000000000)
    so_formatter(test)
    
    
    # [1] "1"                   
    # [2] "999"                 
    # [3] "1K"                  
    # [4] "999K"                
    # [5] "1M"                  
    # [6] "1.5M"                
    # [7] "To be implemented..."
    # [8] "To be implemented..."
    

    【讨论】:

    • 您的答案比@akrun 用于将问题标记为重复的建议中的答案更清晰。
    • @phiver 我理解这方面,我只是让他知道我的想法,除此之外,在原始问题中发布他的答案取决于他。
    猜你喜欢
    • 1970-01-01
    • 2018-11-22
    • 2012-09-06
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2017-08-09
    相关资源
    最近更新 更多