Wilcoxon对R中多列的秩和检验

时间:2015-01-30 04:13:04

标签: r

我有一个数据框,包含52个变量的526个观测值。这些观察来自两个独立的来源,所有数据都是非正态分布的。因此,我想对所有83个变量进行Wilcoxon秩和检验,以比较两个来源。但是,我无法弄清楚如何制作一个函数来逐步完成每个变量。我的第一个想法是使用for循环来逐步调试变量,用它的数字调用每一列。

如果我使用数字来指定列,我也没有遇到任何问题。但是,如果我使用变量,我会收到一条错误消息。例如,以下工作可以很好地在我的数据框的第11列执行Wilcoxon测试:

model<-wilcox.test(pool[ , 11] ~ group, data = pool, paired = FALSE)
model

但是,以下内容会返回错误

i <- 11
model<-wilcox.test(pool[ , i] ~ group, data = pool, paired = FALSE)
model

我得到的错误是:

model.frame.default中的错误(formula = pool [,i] ~Church,data = pool):   变量&#39; pool [,i]&#39;

的类型(列表)无效

显然,我错过了一些关键概念,但我现在可能会感到茫然。

1 个答案:

答案 0 :(得分:1)

您可以像这样构建公式:

modelList<-list()
for(i in 1:83){
    fmla <- formula(paste(names(pool)[i], " ~ group"))
    modelList[[i]]<-wilcox.test(fmla, data = pool, paired = FALSE)
}

这种方法的优点是模型对象将包含变量名称,这使得识别哪些变量与哪些统计信息更容易匹配。