我有很多,例如货币或美元:

1 6,000,000
2 75,000,400
3 743,450,000
4 340,000
5 4,300,000
我想使用后缀来格式化它们,例如M(百万)和B(十亿):
1 6.0 M
2 75.0 M
3 743.5 M
4 0.3 M
5 4.3 M

最佳答案

如果您以此数字 vector x开头,

x <- c(6e+06, 75000400, 743450000, 340000, 4300000)

您可以执行以下操作。
paste(format(round(x / 1e6, 1), trim = TRUE), "M")
# [1] "6.0 M"   "75.0 M"  "743.5 M" "0.3 M"   "4.3 M"

而且,如果您不担心尾随零,只需删除format()调用即可。
paste(round(x / 1e6, 1), "M")
# [1] "6 M"     "75 M"    "743.5 M" "0.3 M"   "4.3 M"

或者,您可以使用打印方法分配S3类,并将y保留为数字。在这里,我使用paste0()使结果更清晰。
print.million <- function(x, quote = FALSE, ...) {
    x <- paste0(round(x / 1e6, 1), "M")
    NextMethod(x, quote = quote, ...)
}
## assign the 'million' class to 'x'
class(x) <- "million"
x
# [1] 6M     75M    743.5M 0.3M   4.3M
x[]
# [1]   6000000  75000400 743450000    340000   4300000

您甚至可以为数十亿亿万亿美元做同样的事情。有关如何将其放入数据框中的信息,请参见this answer,因为您将同时需要format()as.data.frame()方法。

关于r - 格式数字后缀为百万(M)和十亿(B),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28159936/

10-09 20:46