Hello Dear friends
I was doing a correlation analysis from two data matrix.
From this large matrix, I want to get a significant one as a data frame for further analysis. The code and the data are simulated below.
library(Hmisc) library(multtest) library(reshape2) library(dplyr) data(golub) mat = golub rownames(mat) = paste0("G",1:nrow(mat)) #split the samples up randomly to get two matrix m1 = mat[,seq(1,ncol(mat),2)] m2 = mat[,seq(2,ncol(mat),2)] # run the correlation test = rcorr(t(rbind(m1,m2))) n = nrow(m1) # extract the top right block of the full matrix and reshape the data frame from wide to long results = melt(test$r[1:n,(n+1):(2*n)],value.name ="pcc") %>% left_join(melt(test$P[1:n,(n+1):(2*n)],value.name ="p"),by=c("Var1","Var2")) hist(results$p,br=100) sig <- results[results$p < 0.05,] #get the significant as data frame by change the data stracture from long to wide final <- results %>% filter(Var1 %in% sig$Var1 & Var2 %in% sig$Var2) %>% recast(Var1 ~ Var2,data=.,measure.var="pcc")
Eeventhogh I have tried this but could get what I want( the significant).
It just returns me a data frame that contains the significant and the none significant elements.
Any help would be appreciated!