2015-08-19 2 views
0

У меня есть два кадра данных, у которых есть статистические выходы для моих данных, а гены, с которыми я работаю, упоминаются идентификатором кластера в этом фрейме данных. другой кадр данных, который у меня есть, имеет идентификатор кластера и сопровождающий gene_id.Как добавить определенные строки в data.frame в R

data.frame1 представляет собой совокупность неупорядоченных кластеров с соответствующими статистическими данными

  X baseMean 
cluster_1234   542 
cluster_2546   764 
cluster_3472   564 

data.frame2 устраивается кластеров в порядке возрастания, связанный с gene_id-х, однако в случайном порядке, но позвольте мне сравнить назад к другим связанным данным в другом кадре данных.

 gene_id cluster_id 
    gene_69149 cluster_1 
    gene_23478 cluster_2 
    gene_92371 cluster_3 

То, что я хотел бы сделать, это добавить колонку с соответствующим геном-идентификатором для каждого из моих кластеров перебирая data.frame1 $ х. Результатом будет новый кадр данных с интересующими генами и гена-идентификаторами. Я также должен указать, что в data.frame1 есть только 900 строк, но 53 000 строк в data.frame2.Это будет что-то вроде того, что ниже. Другая проблема заключается в том, что числа, связанные с каждым gene_id, не похожи на числа, связанные с каждым номером кластера.

gene_id   X  baseMean 
gene_5463 cluster_1234   542 
gene_7934 cluster_2546   764 
gene_8346 cluster_3472   564 

Я просто хочу, чтобы добавить соответствующий gene_id в новом столбце рядом с кассетными идентификаторами, которые являются важными.

+0

В примерах вы дали, ни один из строки совпадают. Я думаю, вы можете попробовать '? Match'. Ожидаемый результат, основанный на входных данных, будет полезен. – akrun

+0

Пример ввода и вывод различны. Пожалуйста, рассмотрите примеры, которые воспроизводят результат. – akrun

+0

Результат отличается, потому что я хочу пометить cluster_id с соответствующим gen_id в data.frame2 – Sector

ответ

1

Мы можем использовать merge

merge(df1, df2, by.x='X', by.y='cluster_id') 

Если у нас есть большой набор данных, другой вариант inner_join/left_join/full_join и т.д. (в зависимости от выходной хотел) от library(dplyr)

library(dplyr) 
inner_join(df1, df2, by=c('X'='cluster_id')) 
Смежные вопросы