R语言中按地区分组后按自定义年龄区间统计的实现方法
R语言实现地区+年龄分段交叉统计的方案
你可以通过以下几种常用方式实现需求:
方法1:基础R自带函数实现(无需加载第三方包)
直接调用table()函数即可快速生成交叉统计结果:
# 生成交叉统计 contingency table count_table <- table(MyData$Area, MyData$Age) # 若需要转为数据框格式做后续处理,可运行以下代码 count_df <- as.data.frame.matrix(count_table)
运行后得到的count_df结构和你示例的表格完全一致,行对应地区,列对应年龄区间,值为对应分组的人数。
方法2:tidyverse生态实现(适配后续可视化、数据处理流程)
如果后续还要基于统计结果作图或者做其他数据处理,更推荐用dplyr+tidyr的 pipeline 实现:
library(dplyr) library(tidyr) count_df <- MyData %>% # 按地区、年龄区间分组 group_by(Area, Age) %>% # 统计每组人数 summarise(person_count = n(), .groups = "drop") %>% # 转为宽表结构,匹配你需要的输出格式 pivot_wider(names_from = Age, values_from = person_count, values_fill = 0)
配套可视化代码参考
如果需要直接生成分组统计图表,可以接ggplot2实现:
library(ggplot2) MyData %>% group_by(Area, Age) %>% summarise(person_count = n(), .groups = "drop") %>% ggplot(aes(x = Age, y = person_count, fill = Area, label = person_count)) + geom_col(position = position_dodge(width = 0.9)) + geom_text(position = position_dodge(width = 0.9), vjust = -0.3) + labs(x = "年龄区间", y = "人数", fill = "地区")
内容的提问来源于stack exchange,提问作者JeffWithpetersen
相关产品推荐
相关产品推荐

