我正在使用的套餐:
我正在使用的起始数据集:
Group_Size Group_Premium Group_Claims
26 24544.01 18181.25
6 10017.12 7604.51
13 12694.34 8787.00
98 90916.20 67166.73
27 31113.72 27180.83
我想做什么?
我正在尝试创建类似于直方图的东西。
我想通过Group_Size进行bin,这样我就有了0-20,21-40,41-60等的容器[宽度为20的容器]。所以Group_Size箱子就是这个“直方图”的x轴。
我希望y轴绘制总和(Group_Claims)/ sum(Group_Premium)。因此,例如,在上面的虚拟数据集中,我希望0-20 bin具有以下y值:
(7604.51 + 8787.00) / (10017.12 + 12694.34) = 0.7217
到目前为止我尝试过的代码......
library(ggplot2)
df <- data.frame(Group_Size = c(26, 6, 13, 98, 27),
Group_Premium = c(24544.01, 10017.12, 12694.34, 90916.20, 31113.72),
Group_Claims = c(18181.25, 7604.51, 8787.00, 67166.73, 27180.83))
my_plot <- ggplot(
data=df
, aes(x=Group_Size, weights=Group_Claims/Group_Premium)) +
geom_histogram(binwidth=20, boundary = 0)
my_plot
然而,这并不像我想要的那样有用。它将sum(Group_Claims / Group_Premium)作为y值而不是sum(Group_Claims)/ sum(Group_Premium)。我怎样才能实现我的目标?谢谢,全部。
答案 0 :(得分:1)
以下情况如何?
df %>%
mutate(binGroupSize = cut(Group_Size, breaks = seq(0, 100, by = 20))) %>%
group_by(binGroupSize) %>%
summarise(ratioSum = sum(Group_Claims) / sum(Group_Premium)) %>%
ggplot(aes(binGroupSize, ratioSum)) + geom_bar(stat = "identity")
说明:使用cut
来关联Group_Size
(bin宽度= 20),然后按binGroupSize
和summarise
分组{{1}的总和}和Group_Claims
;然后绘制成条形图。
或者如果你想保持“空”水平:
Group_Premium