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.test
e salve todas as estatísticas de cada grupo em uma tabela.
Toda ajuda é muito apreciada.