Teste de Kruskal-Wallis: criar função de lapply para subconjunto data.frame?

Eu tenho um conjunto de dados de valores (val) agrupados por várias categorias (distance & phase) Eu gostaria de testar cada categoriaKruskal-Wallis test, Ondeval é variável dependente,distance é um fator ephase dividir meus dados em 3 grupos.

Como tal, preciso especificar o subconjunto dos dados no teste de Kruskal-Wallis e aplicar o teste a cada um dos grupos. MAS,Não consigo fazer meu subconjunto funcionar!

Na ajuda R, é especificado que osubset éan optional vector specifying a subset of observations to be used. Mas como colocar isso corretamente no meulapply função?

Meus dados fictícios:

# 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")

Isso funciona bem, então meu subconjunto deve ser definido corretamente como um vetor. Mas como usar isso em umlapply função?

# DOES not work!!
lapply(ii, kruskal.test(df$val ~ df$distance,
                        subset = df$phase == as.character(ii))) 

Meu objetivo geral é criar uma função a partir dekruskal.teste salve todas as estatísticas de cada grupo em uma tabela.

Toda ajuda é muito apreciada.

questionAnswers(1)

yourAnswerToTheQuestion