Циклическая функция, которая возвращает список переменных в кадре данных, сгруппированных по другой переменной
В качестве примера набора данных
example.df <- data.frame(
species = sample(c("primate", "non-primate"), 50, replace = TRUE),
treated = sample(c("Yes", "No"), 50, replace = TRUE),
gender = sample(c("male", "female"), 50, replace = TRUE),
var1 = rnorm(50, 100, 5), var2=rnorm(50, 10,5), var3 = rnorm (50, 25, 5))
Я пытаюсь использовать pairw.kw
от asbio
пакет для расчета значений теста dunn после группировки по переменной.
by(example.df,example.df$treated, function(X) pairw.kw(X$var1, X$species, conf = 0.95))
возвращает действительный результат.
Как я могу изменить этот код (или каким-либо другим способом), чтобы перебрать другие числовые переменные (у меня есть 23 в моем фактическом наборе данных)?
1 ответ
Вы могли бы просто построить в sapply()
это перебирает различные переменные. Во-первых, нам нужен символьный вектор, который содержит имена числовых имен.
(vars <- names(example.df)[4:6])
# [1] "var1" "var2" "var3"
Теперь мы помещаем это в by(.)
library("asbio")
res <- by(example.df, example.df$treated, function(X) sapply(vars, function(i)
pairw.kw(X[[i]], X$species, conf = 0.95)))
Наконец вы можете запустить str(res)
чтобы увидеть, что в результате и как получить к нему доступ.
Например
> res$Yes[[4]]
Diff Lower Upper Decision Adj. P-value
Avg.ranknon-primate-Avg.rankprimate -0.19444 -5.55705 5.16817 FTR H0 0.943345