You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R构建2×2×2列联表显示全1而非实际计数的问题如何解决

R构造2×2×2列联表输出全为1的解决方法

问题原因

table()函数默认统计的是各因子水平组合在数据集中的出现次数,你当前的Aspirin数据集里,每个三维因子组合仅对应1行记录,实际计数存储在V2列中没有被调用,因此输出的所有单元格值均为1。

解决方法

方法1:使用xtabs()构造列联表(推荐)

xtabs()支持直接指定计数列作为权重,适配已经汇总好单元格计数的数据集,代码如下:

# 直接指定计数列V2为权重,按三个因子维度聚合
aspirin_table <- xtabs(V2 ~ V3 + V4 + V5, data = aspirin)
# 为维度添加可读标签(可选)
dimnames(aspirin_table) <- list(
  病例对照 = c("对照", "病例"),
  溃疡类型 = c("胃溃疡", "十二指肠溃疡"),
  阿司匹林使用 = c("未使用", "已使用")
)
# 输出最终列联表
print(aspirin_table)

方法2:展开数据集后调用table()(仅适合小数据集)

如果需要沿用table()的逻辑,可以先按照V2的计数值重复展开每一行,再统计频次:

# 按V2的计数重复展开每行记录
expanded_df <- aspirin[rep(seq_len(nrow(aspirin)), aspirin$V2), ]
# 构造列联表
table(
  factor(expanded_df$V3, labels = c("对照", "病例")),
  factor(expanded_df$V4, labels = c("胃溃疡", "十二指肠溃疡")),
  factor(expanded_df$V5, labels = c("未使用", "已使用"))
)

两种方法运行后均可得到携带实际计数的2×2×2列联表。

内容的提问来源于stack exchange,提问作者rrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:54:03