如何在R中访问table()生成的多维列联表维度并拆分表格
处理R中多维列联表的维度访问与拆分
理解table()生成的结构
table()函数生成的是多维数组,而非多个独立表格。tab[1]只是提取数组中的第一个频数元素,而非某个维度的表格。以下是具体的访问和拆分方法:
1. 访问维度的水平值
要查看各维度的名称或对应水平,使用dimnames():
- 查看所有维度名称:
names(dimnames(tab)) - 提取指定维度的所有水平(比如提取"Closest Defender Distance"的水平):
dimnames(tab)$"Closest Defender Distance"
2. 提取指定维度组合的独立表格
通过索引固定其他维度,可以提取任意维度组合的表格:
- 示例1:提取
Zone和Quarter的交叉表,固定Closest Defender Distance为第1个水平、Touch Time为第1个水平、Off Dribble为第1个水平:tab[,,1,,1] - 示例2:用维度名称索引更直观(比如提取
Zone为"Restricted Area"时,所有Closest Defender Distance和Touch Time的交叉表):tab["Restricted Area", , , , ]
3. 转换为长格式后拆分出独立表格
先将多维表转为数据框,再按需拆分:
- 转换为包含所有维度和频数的长格式数据框:
tab_df <- as.data.frame(tab) - 按指定维度拆分(比如按
Quarter拆分,每个季度对应一个数据框):tab_split <- split(tab_df, tab_df$Quarter) - 将拆分后的每个数据框转回表格(比如每个季度下
Zone和Closest Defender Distance的交叉表):lapply(tab_split, function(df) table(df$Zone, df$`Closest Defender Distance`))
内容的提问来源于stack exchange,提问作者Extreme_d1
相关产品推荐
相关产品推荐

