У меня есть две огромные таблицы данных:
> head(x)
gene_id chr min_POS max_POS rs_id pvalue_G pvalue_E metaP
1 ENSG00000047849 3 47568061 48143776 rs319690 0.7139 0.8613 0.7019270
2 ENSG00000047849 3 47568061 48143776 rs4392441 0.5452 0.7074 0.4881783
3 ENSG00000047849 3 47568061 48143776 rs4858887 0.5435 0.7074 0.4870446
4 ENSG00000047849 3 47568061 48143776 rs7651237 0.8621 0.6440 0.6529929
5 ENSG00000047849 3 47568061 48143776 rs6803741 0.5436 0.6612 0.4596804
6 ENSG00000047849 3 47568061 48143776 rs4858881 0.6142 0.6833 0.5189457
...
> head(b)
V2 V3 V4 V5 V6
1: 194857581 194857582 rs224 0 -
2: 194857560 194857561 rs225 0 -
3: 7864903 7864904 rs226 0 +
4: 7864919 7864920 rs227 0 +
5: 5558441 5558442 rs228 0 +
6: 137923628 137923629 rs229 0 +
...
Я пытаюсь объединить их, используя:
x1=merge(b, x, by.x = "V4", by.y="rs_id")
проблема в том, что я хотел бы сохранить все V4 и rs_id, с которыми я сливался. Это слияние дало мне 89 строк в x1, и я хотел бы иметь дополнительный столбец, в котором были бы все соответствующие V4 и rs_id.
Кроме того, файл b огромен, поэтому приветствуется любой более эффективный способ.
В основном мне нужно сопоставить x и b на V4 и rs_id и столбцах, которые мне нужно сохранить в конечном кадре данных: gene_id, chr, rs_id (совпал), pvalue_G, pvalue_E, V2, V3.