2012-07-11 36 views
2

我想创建连续变量的间隔(离散/ bin),以使用ggplot绘制等值线图。在阅读了各种线索之后,我决定使用cutquantile来消除以下问题:a)手动创建垃圾箱,b)照顾显性状态(否则,我必须手动创建垃圾箱并查看地图并重新调整垃圾箱)。连接绘图标签列表

但是,我现在面临着另一个问题。来自cut的区间几乎不可思议。所以,我试图按照这个example和这个example拿出我的漂亮标签。

这里是我的清单:

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函数来转换列表,但我不太熟悉这些函数。

帮助赞赏。

回答

2

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+" 
+0

我提供的输出中有一个额外的标签(41-45),我认为这是你所需要的。 – Ryogi 2012-07-11 18:32:42

+0

非常感谢(是的,我确实需要我从我的例子中遗漏的标签)。我使用'for'循环做了类似的事情。我认为你的代码更好。在我接受你的答案之前,我会等待更多的时间来看看是否有人有更聪明的解决方案。 – karlos 2012-07-11 19:11:19