r - 如何让 cut2 使用逗号?

标签 r factors hmisc

我正在使用库中的 R 函数 cut2 Hmisc 。我给它一个数字向量,然后将其转换为相同大小的间隔:

library(Hmisc)
vals = c(100, 1000, 2000, 3000, 40000, 50000, 60000)
vals_cut = cut2(vals, g=3)
vals_cut
[1] [  100, 3000) [  100, 3000) [  100, 3000) [ 3000,50000) [ 3000,50000) [50000,60000] [50000,60000]
Levels: [  100, 3000) [ 3000,50000) [50000,60000]

当我与他人分享时尝试在图像上使用 vals_cut 时(例如在统计图形上),就会出现问题。人们发现输出很难阅读,因为 a) 数字没有逗号,b) 逗号和第二个数字的开头之间没有空格。

我找不到 cut2 的任何选项可以以这种方式修改输出。谁能推荐一种简单的方法来做到这一点?谢谢。

最佳答案

示例:

library(Hmisc)
vals <-  c(100, 1000, 2000, 3000, 40000, 50000, 60000)
vals_cut = cut2(vals, g=3)
vals_cut

这基本上是有效的;您可能想要进行外观调整。

library(stringr)
trans_level <- function(x,nsep=" to ") {
    n <- str_extract_all(x,"\\d+")[[1]]  ## extract numbers
    v <- format(as.numeric(n),big.mark=",",trim=TRUE) ## change format
    x <- as.character(x)
    paste0(
        substring(x, 1, 1),
        paste(v,collapse=nsep),
        substring(x, nchar(x), nchar(x)))  ## recombine
}
vals_cut2 <- vals_cut
levels(vals_cut2) <- sapply(levels(vals_cut),trans_level)
vals_cut2
[1] [100 to 3,000)     [100 to 3,000)     [100 to 3,000)     [3,000 to 50,000)  [3,000 to 50,000) [50,000 to 60,000] [50,000 to 60,000]
Levels: [100 to 3,000) [3,000 to 50,000) [50,000 to 60,000]

关于r - 如何让 cut2 使用逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416612/

相关文章:

reshape 数据框以将因子转换为 R 中的列

r - 我可以在 R 中描述吗?

r - 如何在独立层的ggplot中缩放颜色?

performance - 迭代且高效地将元素添加到 R igraph 中顶点的列表属性

r - 如何使用 seq() 和 rep() 和 paste() 生成特定向量?

latex - Latex(describe(...)) 在 knitr 下与 MiKTeX 一起工作吗?

r - 在 R 中固定 =T 的字符串开头的 grep?

math - 求因子总和

java - 找到第一个因数超过 500 的三角形数