首页 > 解决方案 > 分组酒吧聊天与每个组内的年龄范围

问题描述

我在类似于下面示例的表格中列出了人员及其组和年龄。我想根据年龄范围绘制分组条形图。

  Group Age
1  G1    29
2  G2    25
3  G3    55
4  G2    33
5  G1    70
6  G3    80

我尝试了这里给出的以下语法,但不知道如何将地块分成三组和每组内的年龄范围

df<- mutate(df, age_class = cut(Age, breaks = seq(20, 80, by = 10)))  
ggplot(df) + geom_bar(aes(x = age_class, fill = Group), position = "dodge") + scale_fill_manual(values = c("red", "blue", "green"))

标签: rggplot2

解决方案


假设您想要一个条形图来计算每个组在每个年龄范围内出现的次数(如果不是,请纠正我,但这是您尝试过的),您可以执行以下操作:

library(tidyverse)
# Reproducing your data
df1 <- tibble(
  Group = c("G1", "G2", "G3", "G1", "G2", "G3"),
  Age = c(29, 25, 55, 33, 70, 80)
)

您当前尝试的问题之一是您试图cut指向名为 的列weight,但您的数据中不存在这样的列。要解决此问题,您可以正确参考您的列Age,如下所示:

df1 <- df1 %>% mutate(Age_class = cut(Age, breaks = seq(20, 80, by = 10))) 

然后,像这样绘制:

ggplot(df1, aes(x = Age_class, fill = Group)) + 
  geom_bar(position = "dodge") + 
  scale_fill_manual(values = c("red", "blue", "green"))

这给出了每个组中每个年龄范围的计数 - 在您的可重现示例中所有计数均为 1,因此输出图如下所示:

ggplot 每组计数条形图,每个年龄段


推荐阅读