2012-07-11 38 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