2

我想创建连续变量的间隔(离散化/bin)以使用 ggplot 绘制等值线图。在阅读了各种线程之后,我决定使用cutquantile消除以下问题:a) 手动创建 bin,b) 处理主导状态(否则,我必须手动创建 bin,查看地图并重新调整 bin)。

但是,我现在面临另一个问题。出来的间隔cut几乎不漂亮。所以,我试图按照这个例子和这个例子来提出我漂亮的标签。

这是我的清单:

x <- seq(1,50)

四舍五入的分位数:

qs_x <- round(quantile(x, probs=c(seq(0,0.8,by=0.2),0.9)))

结果:

 0% 20% 40% 60% 80% 90% 
 1  11  21  30  40  45 

使用这些削减,我想提出这些标签:

1-11, 12-21, 22-30, 31-40, 41-45, 45+

我确信有一个简单的解决方案可以使用某些apply函数转换列表,但我并不精通这些函数。

帮助表示赞赏。

4

1 回答 1

2

3-liner 产生你想要的输出,而不使用apply.

labels <- paste(qs_x+1, qs_x[-1], sep="-")
labels[1] <- paste(qs_x[1], qs_x[2], sep="-")
labels[length(labels)] <- paste(tail(qs_x, 1), "+", sep = "")

第一行构造形式(x1 + 1) - x2的标签,第二行固定第一个标签,第三行固定最后一个标签。这是输出

> labels
[1] "1-11"  "12-21" "22-30" "31-40" "41-45" "45+"  
于 2012-07-11T18:27:39.483 回答