Использование цикла for для циклического перемещения по уникальным элементам в одном столбце в нескольких фреймах данных и определения совпадающих значений между различными фреймами данных - PullRequest
0 голосов
/ 27 января 2019

У меня возникла проблема с, казалось бы, простой проблемой в R, которая ищет совпадающие значения в нескольких фреймах данных.

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

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

DF1

            Feature1           Feature2 delay      pBefore       
pAfter corBefore
4  ENSMUSG00000001525 ENSMUSG00000046434     0 1.598060e-03 
1.598060e-03 0.9671799
6  ENSMUSG00000001525 ENSMUSG00000059796     0 1.431435e-03 
1.431435e-03 0.9689473
8  ENSMUSG00000001525 ENSMUSG00000029814    -1 5.755380e-03 
1.131615e-03 0.9374006

DF2

Feature1           Feature2 delay      pBefore       pAfter corBefore
3  ENSMUSG00000001525 ENSMUSG00000047689     0 6.810160e-04 
6.810160e-04 0.9786161
4  ENSMUSG00000001525 ENSMUSG00000046434     0 2.271583e-03 
2.271583e-03 0.9608283
6  ENSMUSG00000001525 ENSMUSG00000059796     0 9.488937e-04 
9.488937e-04 0.9747420
14 ENSMUSG00000001525 ENSMUSG00000028832     0 1.940198e-03 
1.940198e-03 0.9638164

Существует до 5000 отдельных функций, каждая из которых повторяется, как показано выше в $feature1 (это всего лишь пример одного гена).

Что я хотел бы сделать, это определить в функции 2 для каждого кадра данных (у меня будет до 12 кадров данных), что для каждого уникального гена(т. е. ENSMUSG00000001525), каковы общие элементы в функции 2 в каждом отдельном кадре данных.

Например, приведенные выше таблицы показывают, что ENSMUSG00000046434 является общим для обоих фреймов данных для гена ENSMUSG00000001525.

Ген ENSMUSG00000046434 также может присутствовать и перекрываться между двумя фреймами данных для другого уникального элемента в feature1 (т.е. другого гена), и, следовательно, эти гены также могут дублироваться в признаке 2, но для разных генов в признаке!

Я хочу определить для каждого отдельного гена в feature1 между фреймами данных, есть ли общие гены в Feature 2. Для меня здесь проблема в том, что функция 1, как вы видите, дублируется, и я пытаюсь сделатьон уникален и поэтому не может сделать простое сопоставление.

Я попытался цикл for для циклического прохождения каждого гена, указав, что feature1 должен быть уникальным?хотя я не уверен, что подход правильный ... ... 1023 *

for (Feature1 in unique(df1$Feature1, df2$feature1 etc)) {
 matched<- match(Feature1[df1£feature2, df2$feature2, df3$feature2 etc],)
 print(matched)
}

На мой взгляд, это должно выглядеть примерно так?

Это гораздо сложнее, чем я думал, иЯ думаю, что тот факт, что первые столбцы повторяются, сбивает меня с толку!Любая помощь будет высоко ценится!

Большое спасибо!

...