r - 将cut()产生的标签格式化为百分比

标签 r

我需要在连续变量上应用cut,以使其在ggplot2中以Brewer色标显示,如Setting breakpoints for data with scale_fill_brewer() function in ggplot2所示。连续变量是一个相对的差异,我想将数据格式设置为“ 18.2%”而不是“ 0.182”。有没有简单的方法可以做到这一点?

x <- runif(100)
levels(cut(x, breaks=10))

[1] "(0.0223,0.12]" "(0.12,0.218]"  "(0.218,0.315]" "(0.315,0.413]"
[5] "(0.413,0.511]" "(0.511,0.608]" "(0.608,0.706]" "(0.706,0.804]"
[9] "(0.804,0.901]" "(0.901,0.999]"


我想例如第一个级别显示为(2.23 %, 12 %]。有没有更好的替代方法?

最佳答案

我已经在cut_format()软件包的0.2-3版本中实现了kimisc,现在CRAN上的版本是0.3。

# devtools::install_github("krlmlr/kimisc")
x <- seq(0.1, 0.9, by = 0.2)

breaks <- seq(0, 1, by = 0.25)

cut(x, breaks)
## [1] (0,0.25]   (0.25,0.5] (0.25,0.5] (0.5,0.75] (0.75,1]  
## Levels: (0,0.25] (0.25,0.5] (0.5,0.75] (0.75,1]

cut_format(x, breaks, format_fun = scales::percent)
## [1] (0%, 25%]   (25%, 50%]  (25%, 50%]  (50%, 75%]  (75%, 100%]
## Levels: (0%, 25%] (25%, 50%] (50%, 75%] (75%, 100%]


它仍然不是完美的,无法传递中断数(如原始示例中所示)。

关于r - 将cut()产生的标签格式化为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456371/

相关文章:

r - 对特定行应用 left_join

r - 编译 PDF 时自定义错误消息

R - 两个数据框列到键值对列表

r - 将指定的列转置为具有分组数据的行

r - 通过ID计算时差

r - 避免分面ggplots中的轴刻度标签冲突

r - (空间)在一个点的 X 米内找到所有点的有效方法?

使用 R 中的 plyr 包重命名输出列

r - 基本 R 中具有不同符号大小的图例

r - ipython-notebook:将 rmagic 图打印为 svg