如何在R中制作含年龄维度的多层交叉表
多层交叉表实现方案
修改现有dplyr代码
只需在分组维度中加入Age字段,结合spread或新版pivot_wider即可实现三层维度的交叉表:
方法1:使用spread(兼容旧版tidyr)
NewMexico_DEM_xtab_ <- NewMexico_DEM_Voterfile %>% group_by(CountyName, Age, Sex) %>% # 新增Age到分组维度 tally() %>% spread(Sex, n, fill = 0) # fill=0填充无数据的组合
方法2:使用pivot_wider(tidyr新版推荐,更灵活)
NewMexico_DEM_xtab_ <- NewMexico_DEM_Voterfile %>% group_by(CountyName, Age, Sex) %>% tally() %>% pivot_wider(names_from = Sex, values_from = n, values_fill = 0)
生成的表格会以CountyName和Age作为行维度,Sex作为列维度,展示每个维度组合的计数。
其他工具实现
如果需要传统多维列联表格式,可使用基础R的xtabs函数:
NewMexico_DEM_xtab_ <- xtabs(~ CountyName + Age + Sex, data = NewMexico_DEM_Voterfile)
若要转换为更易读的扁平表格,搭配ftable()即可:
ftable(NewMexico_DEM_xtab_)
内容的提问来源于stack exchange,提问作者Vincent Collis
相关产品推荐
相关产品推荐

