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

R运行卡方检验前删除0值组别报错如何解决?

报错原因与解决方法

第一个报错 length of 'dimnames' [2] not equal to array extent 解决

这个报错的核心原因是:你筛选行后没有重新赋值给后续使用的数据集,且RaceCat为因子类型,筛选后编码4、5对应的空因子水平没有被清理,后续生成列联表时因子水平数和实际数据维度不匹配。
正确的筛选和因子水平清理代码如下:

library(dplyr)
# 筛选掉编码为4、5的组别,同时删除RaceCat的空置因子水平
hivneg <- data %>%
  filter(!RaceCat %in% c(4, 5)) %>%
  # 仅清理RaceCat的空水平,不改动其他变量的因子水平,避免额外问题
  mutate(RaceCat = droplevels(RaceCat))

第二个警告 longer argument not a multiple of length of shorter 解决

这个警告是因为生成列联表的两个变量RaceCat和PrEP2长度不一致,大概率是其中一个变量存在未处理的缺失值,或者你之前没有将筛选后的数据集正确赋值给hivneg。
按如下步骤处理即可:

  1. 先检查两个变量的长度是否一致,确认筛选后的数据集没问题
# 两行输出结果应当完全相等
length(hivneg$RaceCat)
length(hivneg$PrEP2)
  1. 如果长度不一致,在筛选步骤补充缺失值清理逻辑即可:
hivneg <- data %>%
  filter(!RaceCat %in% c(4, 5)) %>%
  # 剔除两个变量有缺失的行
  drop_na(RaceCat, PrEP2) %>%
  mutate(RaceCat = droplevels(RaceCat))
  1. 清理完成后再运行卡方检验即可正常输出结果:
a <- table(hivneg$RaceCat, hivneg$PrEP2)
chisq.test(a, correct = F)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:04