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()

de O Ka -
Número de respuestas: 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.





En respuesta a O Ka

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

de Usuario eliminado -
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)
En respuesta a Usuario eliminado

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

de 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()