Foro de debate

¿Cómo se puede hacer un bucle con varias columnas de una tabla? cor.test()

¿Cómo se puede hacer un bucle con varias columnas de una tabla? cor.test()

by O Ka -
Number of replies: 2
Hola estoy empezando en esto de R. Tengo una tabla con 20-columnas y me pregunto como puedo automatizar para que cada columna la utilice para correlacionarla con cor.test().


¿Pongo las columnas concatenadas?
c(tabla[,5:24])->correl

¿No hace falta?
tabla[,5:24]->correl

¿Como se añade eso para automatizarlo mediante for (i) {}?

Como el cor.test() necesita dos vectores debería dar valor X e Y en cada análisis a cada columna y así hasta enfrentarlas todas entre sí.

¿Alguna pincelada para avanzar un pasito? Sé que me puede faltar teoría sobre la diferencia de data.frame(), apply()... Pero sigo buscando.

Un saludo.





In reply to O Ka

Re: ¿Cómo se puede hacer un bucle con varias columnas de una tabla? cor.test()

by Deleted user -
Hola. Quizá te pueda servir la función corr.test del paquete psych. Ejemplo

#install.packages("psych")
library(psych)
x <- matrix(rnorm(100),nrow=5)
corr.test(x)
In reply to Deleted user

Re: ¿Cómo se puede hacer un bucle con varias columnas de una tabla? cor.test()

by O Ka -
Muchas Gracias Jose Luís... Yo me he encontrado con la función simple cor().

El comando corr.test () que mencionas tiene más opciones ajustar que el cor (), y por la tanto mejor.

Si es que uno se calienta la cabeza y ya hay otros que pensaron lo mismo.
Bueno dejo a los demás parte del script que encontré del cual las variables correlacionadas las muestra en un gráfico de elipses y luego un cluster. Por si hay alguien que lo necesite.


#Instalar paquetes

#install.packages('ellipse')

#install.packages('plotcorr')


#Leer tabla


cl1<-read.table("*.csv",header=T,sep=",")

cl1[,5:24]->cl2

 

#Matriz de correlacion

cor(cl2)-> cl3

library(ellipse)


#Colores del gráfico

colors <- c("#A50F15","#DE2D26","#FB6A4A","#FCAE91","#FEE5D9","white", "#FEE5D9","#FCAE91","#FB6A4A","#DE2D26","#A50F15")


#dibuja el gráfico

pdf("correlacion_ellipse.pdf", width=11.5, height=8)

plotcorr(cl4, col=colors[5*cl4 + 6], type="upper")

dev.off()


#matriz de distancias y cluster

#pasamos la matriz de correlación a matriz de distancias, quitando los signos

cl5<-abs(as.dist(cl4))


#cluster, restando a uno para convertir en distancias

pdf("arbol_correlacion.pdf", width=11.5, height=8)

plot(hclust(1-cl5))

dev.off()