Загрузите ваши данные, чтобы другим было легко воспроизвести ваши результаты:
dat <- structure(list(MMM = c(1, -0.4032522, 0.8772498, 0.3901902, -0.240664
), AA = c(-0.40325223, 1, -0.30295171, 0.06347736, 0.83832262
), AXP = c(0.8772498, -0.3029517, 1, 0.4118945, -0.1304659),
T = c(0.39019025, 0.06347736, 0.41189453, 1, -0.12977234),
BAC = c(-0.240664, 0.8383226, -0.1304659, -0.1297723, 1)),
.Names = c("MMM", "AA", "AXP", "T", "BAC"),
class = "data.frame",
row.names = c("MMM", "AA", "AXP", "T", "BAC"))
Теперь просто получите индекс и используйте подмножество в именах матрицы.
index <- which(abs(dat) > .80 & abs(dat) < 1, # your criteria
arr.ind = T) # the result of the which function is now in rows & columns
cbind.data.frame(stock1 = rownames(dat)[index[,1]], # get the row name
stock2 = colnames(dat)[index[,2]]) # get the column name
# stock1 stock2
#1 AXP MMM
#2 BAC AA
#3 MMM AXP
#4 AA BAC
** Я предположил, что вам нужна высокая абсолютная корреляция (для предсказуемости) - но если вам нужны только акции, которые движутся в тандеме в одном направлении , просто удалите функции abs
.