[R-es] Creación de un bucle con test Kruskal Wallis

Carlos J. Gil Bellosta cgb en datanalytics.com
Mar Ene 21 00:49:21 CET 2014


Hola, ¿qué tal?

No quieres un bucle. Lo que quieres es:

1) Poder aplicar tu prueba a un bloque en el que solo hay una especie.
2) Aplicar (1) a los bloques uno por uno de tu tabla.
3) Recomponer los datos resultantes (¿en una tabla?).

Lo que tienes que hacer es construir una función que resuelva (1). Una
vez que la tengas, usa alguna de las funciones del paquete plyr (casi
seguro que quieres ddply). Mira en

http://plyr.had.co.nz/

y el artículo que aparece en a la derecha en esa página. Los pasos (2)
y (3) son una única línea de código.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com

El día 21 de enero de 2014, 0:15, Manuel Azcárate
<mazcarategarcia en gmail.com> escribió:
> Hola.
>
>
> Llevo poco tiempo con R y estoy  atascado en un problemilla, a ver si
> podéis ayudarme. Estoy trabajando con una base de datos sobre personalidad
> en diferentes especies de aves. Esta base tiene datos de más de 7000
> individuos y me gustaría crear un bucle mediante el cual realizar un test
> de Kruskal Wallis por cada especie (quiero ver si los comportamientos son
> consistentes dentro de cada especie).
>
>
> La base de datos que estoy (llamada birddata) utilizando sigue este modelo:
>
>
> Especie (factor)                               Audacia (numérico)       Numero
> (factor)
>
> Cotorra                                                1.2
>                 1
>
> Cotorra                                                0.8
>                 2
>
> Cotorra                                                1.5
>                 3
>
> Buitre                                                  2.0
>                 4
>
> Buitre                                                  1.8
>                 5
>
> Buitre                                                  2.5
>                 6
>
> Gorrión                                                1.5
>                 7
>
> Gorrión                                                1.7
>                 8
>
> Gorrión                                                1.3
>                 9
>
> Gorrión                                                1.9
>                 10
>
>
>
>
> Para ello he utilizado el siguiente código (el test utilizo la columna de
> “Numero” para que cada dato se tome como un grupo independiente y poder
> compararlos).
>
>
> “rep.var=matrix(nrow = length(names(table(birddata$especie))), ncol = 1)
>
> for (i in 1:length(names(table(birddata$especie)))) {
>
> rep.var[i,1]=na.omit(kruskal.test(Audacia~Numero, data = birddata))
>
> }”
>
>
> Y me da el siguiente error
>
>
> “Error en rep.var[i, 1] = na.omit(kruskal.test(strangeraggr ~ num, data =
> fdata)) :
>
>   número de items para para sustituir no es un múltiplo de la longitud del
> reemplazo”
>
>
> He intentando buscar cómo solucionarlo, pero no he encontrado ninguna
> manera satisfactoria que no me de otro errordiferente.  A ver si me podéis
> ayudar.
>
>
> Muchas gracias por adelantado
>
> Un saludo
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>



Más información sobre la lista de distribución R-help-es