Prueba de Kruskal-Wallis: ¿crear la función lapply para subconjugar data.frame?
Tengo un conjunto de valores de datos val
) agrupados por varias categorías distance
& phase
). Me gustaría probar cada categoría porKruskal-Wallis test
, dóndeval
es variable dependiente,distance
es un factor yphase
dividir mis datos en 3 grupos.
Como tal, necesito especificar el subconjunto de datos dentro de la prueba de Kruskal-Wallis y luego aplicar la prueba a cada uno de los grupos. PERO,No puedo hacer que mi subconjunto funcione!
n la ayuda de R, se especifica que lasubset
esan optional vector specifying a subset of observations to be used.
Pero cómo poner esto correctamente a milapply
función?
Mis datos ficticios:
# 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")
Esto funciona bien, por lo que mi subconjunto debe establecerse correctamente como un vector. Pero cómo usar esto en unalapply
función?
# DOES not work!!
lapply(ii, kruskal.test(df$val ~ df$distance,
subset = df$phase == as.character(ii)))
Mi objetivo general es crear una función desdekruskal.test
, y guarde todas las estadísticas para cada grupo en una tabla.
Toda la ayuda es muy apreciada.