在 R 中将数字 1000 格式化为 1k,1000000 格式化为 1m 等[重复]

2024-01-04

我需要使用缩写来显示数字,如下所示

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 至少有三次):

使用公制前缀(如 1.5K、1M、1G 等)格式化 JavaScript 数字 https://stackoverflow.com/questions/17633462/format-a-javascript-number-with-a-metric-prefix-like-1-5k-1m-1g-etc

如果数字为 1000,则将数字格式化为 2.5K,否则为 900 https://stackoverflow.com/questions/9461621/format-a-number-as-2-5k-if-a-thousand-or-more-otherwise-900

如何格式化类似于 Stack Overflow 信誉格式的数字 https://stackoverflow.com/questions/3177855/how-to-format-numbers-similar-to-stack-overflow-reputation-format

oracle查询中1000000转1M和1000转1K https://stackoverflow.com/questions/19522582/1000000-to-1m-and-1000-to-1k-in-oracle-query

1000 至 1k、1000000 至 1m 等数字缩写 https://stackoverflow.com/questions/24154351/1000-to-1k-1000000-to-1m-etc-number-abbreviation

...但我无法找到 R 的任何内容。我错过了什么吗?


Using 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..."
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中将数字 1000 格式化为 1k,1000000 格式化为 1m 等[重复] 的相关文章

随机推荐