Матрица корреляции между двумя фреймами данных в R - PullRequest
1 голос
/ 24 февраля 2020

У меня есть два s:

dataframe1

name1 500
name2 394
name3 344
...
name2000 300

dataframe2

name1 200
name2 194
name3 44
...
name2000 100

И пустая матрица 2000X2000 (empty.matrix)

Я хочу заполнить эту матрицу значениями корреляции между двумя с. Так что первый элемент в df1 будет иметь значение корреляции с каждым элементом от df2 ... до element 2000. Я делаю это с помощью следующего кода:

for (i in 1:2000) {
  for (j in 1:2000){ 
    empty.matrix[i,j] <- cor(df1$V1[[i]],df2$V2[[j]])
    }
}

Проблема в том, что это занимает вечность. У кого-нибудь есть более быстрый способ справиться с этим? Спасибо!

1 Ответ

2 голосов
/ 24 февраля 2020

при условии, что ваши фреймы данных имеют одинаковое количество строк, следующий код должен работать:

cor(dataframe1, dataframe2)

Вот пример использования набора данных mtcars в R:

cor(mtcars[1:5], mtcars[6:11])
         wt        qsec         vs         am       gear       carb
mpg  -0.8676594  0.41868403  0.6640389  0.5998324  0.4802848 -0.5509251
cyl   0.7824958 -0.59124207 -0.8108118 -0.5226070 -0.4926866  0.5269883
disp  0.8879799 -0.43369788 -0.7104159 -0.5912270 -0.5555692  0.3949769
hp    0.6587479 -0.70822339 -0.7230967 -0.2432043 -0.1257043  0.7498125
drat -0.7124406  0.09120476  0.4402785  0.7127111  0.6996101 -0.090789
...