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

使用dplyr进行Chi-square test(卡方检验)报错的解决求助

问题解决步骤

首先修正你的dataframe构造错误:
你写的rep(29, 17, 36)是错误用法,rep()函数的参数逻辑是rep(目标值, 重复次数),你想生成三个独立数值,应该用c()而非rep():

data = data.frame(group = c("conse", "dem", "schoo"),
                  f = c(43, 30, 36),
                  m = c(29, 17, 36))

然后解决卡方检验的报错问题:
chisq.test()要求输入纯数值型的列联表,而你的原dataframe包含字符型的group列,直接传入会导致sum函数无法处理字符类型,触发报错。解决方法是只传入男女数值列:

方法1:用dplyr筛选数值列后做检验

library(dplyr)
data_chi = data %>%
  select(f, m) %>%  # 只保留男女计数的数值列
  chisq.test()

方法2:直接提取数值列传入

data_chi = chisq.test(data[, c("f", "m")])

方法3:将group设为行名后用数值表检验

如果你需要保留分组信息作为行标签,可以先设置行名再去掉字符列:

rownames(data) = data$group
data_num = data[, -1]  # 移除group列
data_chi = chisq.test(data_num)

执行上述任意方法后,就可以正常得到卡方检验的结果了。你之前转成tibble无效,是因为tibble只是数据结构不同,并没有移除字符型的group列,所以问题根源没解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 10:55:20