Получение корреляций из больших смешанных наборов данных с data.table - PullRequest
1 голос
/ 07 мая 2019

У меня есть несколько больших наборов данных, для которых я хотел бы получить корреляции с одной конкретной переменной этого же набора данных.

Например, корреляция переменной A с другими переменными в data.table.

  1. Из-за размера наборов данных я хочу использовать data.table.
  2. Эти наборы данных являются не только числовыми, но и категориальными.
  3. Поэтому я хотел бы иметь возможность применять различные методы корреляции в зависимости от класса переменной. Я бы предпочел использовать разные корреляции для категориальных переменных, то есть корреляцию ранга Спирмена.

Пример:

library(data.table)
df <- fread(
    "A   B   D  E  iso   year   
     1   A   1  NA ECU   2009   
     2   B   2  0  ECU   2009   
     3   D   3  0  BRA   2011   
     4   E   4  0  BRA   2011   
     5   D   7  NA ECU   2008   
     6   E   1  0  ECU   2008   
     7   A   3  2  BRA   2012   
     8   A   4  NA BRA   2012",
  header = TRUE
)

Я получаю числовые столбцы, используя:

numcols <- which(sapply(df, is.numeric))

Следующим шагом для числовых переменных должно быть что-то вроде:

dfcor <- df[, x := .(list(cor(.SD, use= "pairwise.complete.obs", method= "pearson"))), by = iso, .SDcols = numcols]

Это, однако, создает столбец x с вектором корреляций вместо отдельных столбцов для корреляций:

c(1, 0.942908070944406, 0.365636212063565, NA, -0.970142500145332, 0.942908070944406, 1, 0.0509647191437626, NA, -0.845154254728517, 0.365636212063565, 0.0509647191437626, 1, NA, -0.502518907629606, NA, NA, NA, NA, NA, -0.970142500145332, -0.845154254728517, -0.502518907629606, NA, 1)

Кроме того, этот ответ дает мне только корреляции Пирсона, где это применимо. Однако я хотел бы использовать и ранг короля копья. Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...