2015-03-18 41 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