Я украл этот пример из следующего поста: LINK
set.seed(1)
TDT <- data.table(Group = c(rep("A",40),rep("B",60)),
Id = c(rep(1,20),rep(2,20),rep(3,20),rep(4,20),rep(5,20)),
Time = rep(seq(as.Date("2010-01-03"), length=20, by="1 month") - 1,5),
norm = round(runif(100)/10,2),
x1 = sample(100,100),
x2 = round(rnorm(100,0.75,0.3),2),
x3 = round(rnorm(100,0.75,0.3),2),
x4 = round(rnorm(100,0.75,0.3),2),
x5 = round(rnorm(100,0.75,0.3),2))
Чтобы получить корреляции x1 - x5 по времени, можно использовать:
TDT[, x := .(list(cor(.SD))), by = Time, .SDcols = 5:9]
Однако вместо корреляций x1 - x5 по времени меня интересует корреляция x1
со ВСЕМИ другими переменными (не только x1 - x5) во времени. Кроме того, я как-то хотел бы иметь значение корреляции: для объяснения смотрите видео около 5: 16 .
Чтобы разобраться с нечисловыми столбцами и NA
, я попытался пойти по этому пути:
numcols <- which(sapply(TDT, is.numeric))
TDTcor <- TDT[, x := .(list(cor(.SD, use= "pairwise.complete.obs", method= "pearson"))), by = time, .SDcols = numcols]
Основная проблема заключается в том, что это все равно дает все корреляции (что создает проблемы из-за очень больших наборов данных, которые я использую). Это также не дает значения корреляций.
Может кто-нибудь сказать мне, как действовать?