r - 基于另一列的值的列的条形图
问题描述
我有类似以下数据集的内容:
1. Donation 2. Treatment 3. Category.
2€ TG2 Teenager
1€ TG1 Adult
2€ TG2 Adult
and so on
有多个参与者。每个参与者都是特殊治疗组 (TG) 的一部分,并被分配到一个类别。
我现在想绘制两个这样的条形图:
- 一张图表中所有 TG 的捐赠
- 一张图表中的所有类别的捐赠
我不知道该怎么做。如果我使用 barplot(table(Donation)),它只会给我捐款的 barplot。我可以以某种方式将这些数据分组到条形图中吗?
例如
解决方案
如果没有可重现的示例,很难确定这个答案是否适合您的数据集。
在这里,根据您提供的一些信息,我生成了一个假示例:
df <- data.frame(Donation = sample(1:20, 100, replace = TRUE),
Treatment = sample(c("TG1","TG2"), 100, replace = TRUE),
Category = sample(c("Teenager","Adult"), size = 100, replace = TRUE))
Donation Treatment Category
1 2 TG2 Adult
2 6 TG2 Adult
3 11 TG1 Teenager
4 16 TG2 Adult
5 7 TG1 Teenager
6 17 TG2 Adult
您可以使用dplyr
以下方式计算每个治疗组和类别的捐赠总和:
library(dplyr)
DF <- df %>% group_by(Treatment, Category) %>%
summarise(Sum = sum(Donation))
# A tibble: 4 x 3
# Groups: Treatment [2]
Treatment Category Sum
<fct> <fct> <int>
1 TG1 Adult 207
2 TG1 Teenager 236
3 TG2 Adult 372
4 TG2 Teenager 235
然后,您可以使用这个新的数据框“DF”来获取条形图ggplot2
:
library(ggplot2)
ggplot(DF, aes(x = Treatment, y = Sum, fill = Category))+
geom_col(position = position_dodge())
编辑:分隔条形图
要仅获得每个治疗组的捐赠总和:
ggplot(DF, aes(x = Treatment, y = Sum, fill = Treatment))+
geom_col()
仅获取每个类别的捐赠总和:
ggplot(DF, aes(x = Category, y = Sum, fill = Category))+
geom_col()
推荐阅读
- postgresql - 如何在 Hasura 中创建数组关系?
- json - 在 .Net 中的循环内创建 JSON
- java - 找不到使用 Feign throws bean 的微服务之间的通信
- c++ - 霍纳算法在 C++ 中的实现
- java - Firebase:如何将 MVElqwKb7MtE1nIXLUH 更改为我注册时使用的电子邮件地址?
- reactjs - 试图将 calc 应用程序转换为打字稿,这个函数应该是什么类型?
- testing - Devops 管道中的手动测试
- python - 如何在 Python 中选择字典的常用键和求和值?
- elasticsearch - 如何在 ElasticSearch 中排除字段被索引?
- css - 在导航项(引导导航)上执行自定义悬停动画,但效果在我的反应应用程序中不可见