Найти коэффициенты корреляции между двумя большими кадрами данных - PullRequest
0 голосов
/ 24 мая 2018

Мне нужны большие кадры данных для геномного анализа.Каждый из этих фреймов данных имеет 500 тыс. Строк и 100 столбцов.Эти 100 столбцов представляют измерения для каждого гена.Я хочу вычислить коэффициент корреляции Спирмена для каждого гена по всем 100 значениям в обеих фермах данных.Пример:

df1
genename      x1      x2     x3  ..............x100
gene1      0.236   0.589  0.896               0.789
gene2      -0.361  0.782  0.583               0.478


df2
genename      x1      x2     x3  ...............x100
gene1      0.101   0.256  0.026               0.0.56
gene2      -0.231  0.569  0.158               0.0223

Например, я хочу найти все коэффициенты корреляции для gene1 на всех 100 наблюдениях.Это означает, что у меня должно быть 100 корреляционных кофф для каждого гена

1 Ответ

0 голосов
/ 24 мая 2018

Формулировка «у меня будет 100 коэффициентов корреляции для каждого гена» вводит меня в заблуждение, поскольку каждая строка помечена как geneX, а ваше описание звучит так, будто вы пытаетесь найти коэффициент корреляции между xX в df1 и xX в df2где строки будут ваши наблюдения.Предполагая, что вы пытаетесь найти корреляцию Спирмена между одинаково помеченными строками df1 и df2 (т. Е. Корреляция между gene1 в df1 и df2), это можно сделать так:

m1 <- as.matrix(df1)
m2 <- as.matrix(df2)

res <- c()

for (i in 1:nrow(m1)) {
    res <- c(res, cor(m1[i,], m2[i,], method = "spearman")))
}

Это может занять немного времени, учитывая размер data.frames.На моем компьютере требуется около 20 секунд, чтобы выполнить 100000 матриц строк.Возможно, стоит заглянуть в mclapply, если у вас есть доступ к нескольким ядрам.

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