2015-03-18 36 views
0

由於某些原因,這完全避開了我。我試圖在R中創建一個條形圖,其中x值是一個變量的桶(例如1-10,11-20,21-30等),y值是該分段範圍內另一個變量的中值。創建帶桶的條形圖不使用ggplot2中的計數

所以,如果我的價值觀是:

x y 
2 5 
4 6 
6 6 
10 7 
14 15 
17 18 

我希望做一個圖表用x繪圖中位數Y,有兩個桶的x值,一個從1-10和一個從11-20 。 1-10的條的高度是該範圍x的y的中值,在這種情況下是6。對於11-20的條的高度將是該範圍的y的中值,或者在這種情況下是16.5。

我不知道如何做到這一點,除了「硬編碼」,並通過if語句添加一個新的列,檢查x值並在列中添加一個新的字符串,如「1 -10「,但這是一個可怕的解決方案。

我看過其他Stack Exchange的答案,但他們幾乎總是處理計數,而不是另一個值的中位數。

非常感謝任何幫助。

回答

1

這可能是一種方法。我可能會使用cut()並創建一個新的組變量。然後,總結數據以獲得每個組的中位數。在這裏,我打電話給你的數據mydf

library(dplyr) 
library(ggplot2) 

group_by(mydf, group = cut(x, breaks = c(1, 10, 20), labels = c("1-10", "11-20"))) %>% 
summarise(median = median(y)) -> mydf2 

ggplot(data = mydf2, aes(x = group, y = median)) + 
geom_bar(stat = "identity") 

enter image description here