使用在 ggplot2 中不使用计数的桶创建条形图
Create bar chart with buckets NOT using count in ggplot2
出于某种原因,我完全无法理解这一点。我正在尝试在 R 中创建一个条形图,其中 x 值是一个变量的桶(例如 1-10、11-20、21-30 等),y 值是该桶范围内另一个变量的中值。
所以,如果我的价值观是:
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。
我不知道该怎么做,除了 "hard-coding" 它并通过 if 语句添加一个新列,该语句检查 x 值并在列中添加一个新字符串,类似“ 1-10”,但这让我觉得这是一个糟糕的解决方案。
我查看了 Stack Exchange 的其他答案,但它们几乎总是处理计数,而不是另一个值的中位数。
非常感谢任何帮助。
这可能是一种方法。我可能会使用 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")
出于某种原因,我完全无法理解这一点。我正在尝试在 R 中创建一个条形图,其中 x 值是一个变量的桶(例如 1-10、11-20、21-30 等),y 值是该桶范围内另一个变量的中值。
所以,如果我的价值观是:
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。
我不知道该怎么做,除了 "hard-coding" 它并通过 if 语句添加一个新列,该语句检查 x 值并在列中添加一个新字符串,类似“ 1-10”,但这让我觉得这是一个糟糕的解决方案。
我查看了 Stack Exchange 的其他答案,但它们几乎总是处理计数,而不是另一个值的中位数。
非常感谢任何帮助。
这可能是一种方法。我可能会使用 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")