r - 在ggplot中绘制百分比
问题描述
我有一个包含 1800 行和 2 列的数据框,riskGrp ("1", "2", '3") 和死亡率 (0, 1)。我想要的是一个条形图,显示 riskGrp 的死亡率百分比。我尝试了以下方法,但只得到了每个风险组贡献的死亡率百分比。这是我的代码:
library(tidyverse)
v1 <- data.frame(
riskGrp = c("Low", "Low", "Low", "Mid", "Mid", "High", "High", "High", "High"),
mortality = c(0, 0, 1, 0, 1, 0, 1, 1, 1)
)
ggplot(v1, aes(riskGrp)) +
geom_bar(aes( y=mortality/sum(mortality)), stat = "identity") +
labs(fill = "ICU Disposition", x="Risk Group") +
scale_y_continuous(labels = scales::percent)
该图应包含三个条形:“低”表示死亡率 = 33%,“中”表示死亡率为 50%,“高”表示死亡率为 75%。如何获得分层死亡率?
谢谢!
安德鲁
好的,这是一个最小的可重现示例:
library(tidyverse)
v1 <- data.frame(
riskGrp = c("Low", "Low", "Low", "Mid", "Mid", "High", "High", "High", "High"),
mortality = c(0, 0, 1, 0, 1, 0, 1, 1, 1)
)
ggplot(v1, aes(riskGrp)) +
geom_bar(aes( y=mortality/sum(mortality)), stat = "identity") +
labs(fill = "ICU Disposition", x="Risk Group") +
scale_y_continuous(labels = scales::percent)
该图应包含三个条形:“低”表示死亡率 = 33%,“中”表示死亡率为 50%,“高”表示死亡率为 75%。
解决方案
I would just aggregate the data beforehand and then plot using geom_col
:
library(tidyverse)
v1 %>%
group_by(riskGrp) %>%
summarise(mortality = mean(mortality)) %>%
ggplot(aes(riskGrp, mortality))+geom_col()+
scale_x_discrete(limits = c("Low", "Mid", "High"))+
scale_y_continuous(labels = scales::percent)
推荐阅读
- c++ - 当键不唯一时解析键、值对
- oracle - 如何解决 Entity Framework 中的 Oracle DBLinks 限制?
- regex - API 测试正文中的正则表达式
- kubernetes - Spring Cloud Dataflow errorChannel 不起作用
- java - 我想使用jsoup(java开源库)解析html数据
- php - 当用户在 codeignitor http://localhost/abc/categories/sub_categories/add_sub_categories 中提交表单时,我想调用一个函数
- php - 在php foreach循环中获取数组中的下一个键
- javascript - 返回内部 if else 并使用粗箭头
- gridview - DevExpress GridView VisibleRowCount
- java - 文件位置显示 eclipse 安装目录而不是 eclipse 工作区