У меня есть набор данных значений (val
), сгруппированных по нескольким категориям (distance
& phase
). Я хотел бы проверить каждую категорию по Kruskal-Wallis test
, где val
- это зависимая переменная, distance
- это коэффициент, а phase
разделил мои данные на 3 группы.
Как таковой, мне нужно указать подмножество данных в тесте Крускала-Уоллиса, а затем применить тест к каждой из групп. НО, Я не могу заставить работать мое подмножество!
В справке R указано, что subset
равно an optional vector specifying a subset of observations to be used.
Но как правильно установить это в моей функции lapply
?
Мои фиктивные данные:
# create data
val<-runif(60, min = 0, max = 100)
distance<-floor(runif(60, min=1, max=3))
phase<-rep(c("a", "b", "c"), 20)
df<-data.frame(val, distance, phase)
# get unique groups
ii<-unique(df$phase)
# get basic statistics per group
aggregate(val ~ distance + phase, df, mean)
# run Kruskal test, specify the subset
kruskal.test(df$val ~df$distance,
subset = phase == "c")
Это хорошо работает, поэтому мое подмножество должно быть правильно задано как вектор.
Но как использовать это в lapply
функции?
# DOES not work!!
lapply(ii, kruskal.test(df$val ~ df$distance,
subset = df$phase == as.character(ii)))
Моя общая цель - создать функцию из kruskal.test
и сохранить всю статистику для каждой группы в одну таблицу.
Вся помощь высоко ценится.