如何将卡方检验的观测与期望计数导出为规范表格?
解决卡方检验表格单元格重复值问题
问题出在直接对data.frame使用paste时,会按列向量进行循环拼接,导致每个单元格重复显示整列的观测/期望值。以下是修正后的代码:
方法一:基于矩阵直接处理
# 生成交叉表(保留matrix格式) test <- table(mtcars$am, mtcars$carb) # 执行卡方检验 Xsq <- chisq.test(test) # 逐元素拼接观测值与期望值,还原原表格结构 test2 <- matrix( paste(as.integer(test), paste0("(", round(Xsq$expected), ")"), sep = ""), nrow = nrow(test), dimnames = dimnames(test) ) # 如需转为data.frame格式 test2 <- as.data.frame(test2)
方法二:针对data.frame逐列处理
test <- as.data.frame.matrix(table(mtcars$am, mtcars$carb)) Xsq <- chisq.test(test) # 逐列匹配观测值与期望值并拼接 test2 <- mapply(function(obs_col, exp_col) { paste(obs_col, paste0("(", round(exp_col), ")"), sep = "") }, test, as.data.frame(Xsq$expected)) test2 <- as.data.frame(test2)
两种方法都能让每个单元格呈现观测值(期望值)的格式,避免重复值问题。
内容的提问来源于stack exchange,提问作者four77
相关产品推荐
相关产品推荐

