Display Correlation Tables as Descending List
correlation, r
Solution
Here's one of many ways I could think to do this. I used the reshape package because the `melt()` syntax was easy for me to remember, but the `melt()` command could pretty easily be done with base R commands:
require(reshape)
## set up dummy data
a <- rnorm(100)
b <- a + (rnorm(100, 0, 2))
c <- a + b + (rnorm(100)/10)
df <- data.frame(a, b, c)
c <- cor(df)
## c is the correlations matrix
## keep only the lower triangle by
## filling upper with NA
c[upper.tri(c, diag=TRUE)] <- NA
m <- melt(c)
## sort by descending absolute correlation
m <- m[order(- abs(m$value)), ]
## omit the NA values
dfOut <- na.omit(m)
## if you really want a list and not a data.frame
listOut <- split(dfOut, 1:nrow(dfOut))
Problem
When running cor() on a times series with a lot of variables, I get a table back that has a row and column for each variable, showing the correlation between them. How can I view this table as a list from most correlated to least correlated (eliminating all NA results and results that map back to themselves (i.e. the correlation of A to A)). I would also like to count inverse (negative) results as absolute values, but still show them as negative. So the desired output would be something like: ``` A,B,0.98 A,C,0.9 C,R,-0.8 T,Z,0.5 ```