出于某种原因,这完全是在逃避我。我试图在R中创建一个条形图,其中x值是一个变量的桶(例如1-10、11-20、21-30等),y值是另一个变量在这个桶形范围内的中值。
所以,如果我的价值观是:
x y
2 5
4 6
6 6
10 7
14 15
17 18我想用两个桶表示x值,一个从1-10,一个从11-20。在这个范围内,1-10的标杆的高度是y的中值,在这种情况下是6。在这个范围内,11-20的标杆的高度是y的中值,在这种情况下是16.5。
我不知道如何做到这一点,除非是“硬编码”,然后通过if语句添加一个新列,该语句检查x值,并在列中添加一个新字符串,上面写着"1-10",但我认为这是一个糟糕的解决方案。
我看过其他答案,但它们几乎总是在处理计数,而不是另一个值的中值。
会非常感谢你的帮助。
发布于 2015-03-19 00:05:35
这可能是一条路。我可能会使用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")

https://stackoverflow.com/questions/29134763
复制相似问题