我想创建连续变量的间隔(离散化/bin)以使用 ggplot 绘制分区统计图。在阅读了各种线程后,我决定使用 cut
和 quantile
来消除以下问题:a) 手动创建 bin,b) 处理主导状态(否则,我必须手动创建垃圾箱并查看 map 并重新调整垃圾箱)。
但是,我现在面临另一个问题。 cut
出来的间隔并不漂亮。所以,我试图遵循这个example还有这个example拿出我漂亮的标签。
这是我的 list :
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
函数来转换列表,但我不太熟悉这些函数。
感谢帮助。
最佳答案
3 行代码可以产生您想要的输出,无需使用 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+"
关于r - 连接绘图标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11438821/