R Kruskal-Wallis有多种因素

时间:2016-01-29 18:07:22

标签: r kruskal-wallis

我正在寻找帮助,对我的数据集执行Kruskal-Wallis测试,以获取大量因素。我可以针对单个因素执行测试,例如AD_1yr:

kruskal.test(Shannon ~ AD_1y, data=comm)

但我有超过50个我想测试的因素,并希望有一个我可以输入的代码,它将执行所有因素的测试,而无需手动执行50次不同的测试。

1 个答案:

答案 0 :(得分:2)

我们可以使用lapply循环遍历factor列,使用'shannon'列创建data.frame并执行kruskal.test

allfactorcolumns <- sapply(comm, is.factor)
lst <- lapply(comm[allfactorcolumns], function(x) 
    kruskal.test(Shannon~., data= data.frame(x, comm['Shannon'])))

如果我们需要提取'p.value','df'等

do.call(rbind, lapply(lst, function(x) data.frame(Pval= x$p.value, 
                     stat= x$statistic, df= x$parameter)))