Функция pair.panels в R для определения c корреляций столбцов в кадре данных - PullRequest
0 голосов
/ 01 мая 2020

У меня очень большой набор данных, и я пытаюсь найти корреляцию между множеством различных (и случайных) комбинаций данных. Например, мне может потребоваться корреляция между 3-м столбцом и 12-м или 15-м столбцами или корреляция между 20-м столбцом и 1-м или 4-м столбцами, например, c ...

, который я сейчас использую Функция pair.panels () из библиотеки psych, но я не могу точно указать конкретную пару столбцов c, которую я хотел бы.

1 Ответ

1 голос
/ 01 мая 2020

Здесь df, фиктивный data.frame с 26 столбцами, каждый из которых содержит случайные значения, поэтому корреляции должны быть достаточно низкими для любой пары столбцов.

cols = lapply(1:26, function(dummy) runif(30))
df = do.call(data.frame, cols)
names(df) = LETTERS

Если вы хотите, чтобы корреляция между столбцом «X» и столбцами «A», «C» и «E» попробуйте sapply с функцией cor.

sapply(df[c("A","C","E")], cor, df["X"])

Или используйте номера столбцов:

sapply(df[c(1,3,5)], cor, df[24])

Если вам нужны все перестановочные комбинации корреляций между двумя группами столбцов, попробуйте:

firstGroup <- c(1,3,5,20)
secondGroup <- c(14,20,25)
combos <- expand.grid(firstGroup, secondGroup)
result <- mapply(cor, df[combos$Var1], df[combos$Var2])
resultAsMatrix <- matrix(result, nrow = length(firstGroup), dimnames = list(firstGroup, secondGroup))

Чтобы получить:

> resultAsMatrix
            14         20          25
1  -0.22949844 -0.1527876 -0.11877405
3   0.23174965  0.0311125  0.33570756
5   0.01491815 -0.1263007 -0.16688800
20  0.18007802  1.0000000  0.04638838

РЕДАКТИРОВАТЬ:

@ user20650 отметил, что функция cor может сравнивать две встроенные матрицы. Итак:

cor(df[firstGroup], df[secondGroup])

возвращает матрицу, которую я создал вручную, выше:

            N          T           Y
A -0.22949844 -0.1527876 -0.11877405
C  0.23174965  0.0311125  0.33570756
E  0.01491815 -0.1263007 -0.16688800
T  0.18007802  1.0000000  0.04638838
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...