Я создал столбец для объединения повторений, если они не все тройные, вам нужно это настроить.
library(reshape)
df<-structure(list(MktDate = structure(c(17865, 17865, 17865, 17896,
17896, 17896, 17927, 17927, 17927), class = "Date"), Var1 = c(1, 2, 3, 1, 2, 3, 1, 2, 3),
Var2 = c(3, 5, 2, 4, 3, 2, 1, 2, 5), Var3 = c(8, 7, 6, 9, 8, 9, 5, 8, 7)),
class = "data.frame", row.names = c(NA,-9L))
df$rep<- rep(seq(1,3),3)
df.mut<-reshape(df, idvar = "MktDate", timevar = "rep", direction = "wide")
var1var2=apply(df.mut,1, function(x) cor(as.numeric(x[seq(2,10,3)]), as.numeric(x[seq(3,10,3)])))
var2var3=apply(df.mut,1, function(x) cor(as.numeric(x[seq(3,10,3)]), as.numeric(x[seq(4,10,3)])))
var1var3=apply(df.mut,1, function(x) cor(as.numeric(x[seq(2,10,3)]), as.numeric(x[seq(4,10,3)])))
results <- data.frame(MktDate = rep(unique(df$MktDate)), FactorPair = rep(c("Var1Var2", "Var2Var3", "Var1Var3"), each =3 ),
cor= c(var1var2,var2var3,var1var3))
results <- results[order(results$MktDate),]