R Крускал-Уоллис с несколькими факторами

Я ищу помощь в выполнении теста Крускала-Уоллиса на моем наборе данных для большого количества факторов. Я могу выполнить тест для одного фактора, например, AD_1yr:

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

Но у меня есть более 50 факторов, которые я хочу протестировать, и я надеялся, что есть код, который я могу ввести, который будет выполнять тест для всех факторов без необходимости вручную выполнять тест 50 раз.

1 ответ

Мы можем использовать lapply перебрать factor столбцы, создать 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)))
Другие вопросы по тегам