从一个表中的列添加值,这是基于在R中的另一个表中找到结果的结果

问题描述 投票:0回答:1

我在R中有一个数据表:

  |gene           |   prom_65|   prom_66|  amast_69|  amast_70|  markerID|
  |:--------------|---------:|---------:|---------:|---------:|---------:| 
  |ABC            |   24.7361|   25.2550|   31.2974|45.4209   |16:123234_T/C; 16:54352342_A/T; 16:747564_T/G|
  |DFG            |  107.3580|  112.9870|   77.4182|   86.3211| 16:3453453_G/A; 16:765753453_A/T; 16:65345345_T/G| 
  |LKP            |   72.0639|   86.1486|   68.5747|   77.8383| 16:25234453_G/C; 16:876456546_A/T; 16:4535_T/G| 
  |KLF            |   43.8766|   53.4004|   34.0255|   38.4038| 16:87484_G/A; 16:5435_A/T; 16:747564_T/G|  
  |PPO            | 2382.8700| 1871.9300| 2013.4200| 2482.0600| 16:785_T/C; 16:5435_A/T; 16:747564_T/G| 
  |LWPV           |   49.6488|   53.7134|   59.1175|   66.0931| 16:123_T/C; 16:54564_A/T; 16:54646_T/G|

我还有另一个数据表:

|markerid       |   prom_65|   prom_66|  amast_69|  amast_70|  pvalue|
|:--------------|---------:|---------:|---------:|---------:|---------:|
|16:123234_T/C |x         |     x    |       x  |       x  |     x    |
|16:3453453_G/A|  x       |    x     |     x            x  |       x  |

我想在表二中添加与表一中相关基因匹配的标记物的基因列。在表一中,markerID都用分号分隔,并且markerID只会出现在表1的一个基因行中。在此示例中,输出应如下所示:

|markerid       |   prom_65|   prom_66|  amast_69|  amast_70|  pvalue  |gene|
|:--------------|---------:|---------:|---------:|---------:|---------:|
|16:123234_T/C  |x         |     x    |       x  |       x  |     x    |ABC
|16:3453453_G/A |  x       |    x     |     x    |        x |       x  |DFG

不确定如何在R中进行此操作。

非常感谢

r dataframe bioinformatics
1个回答
1
投票

没有表的可复制示例,很难确定最后一列的外观(似乎是列表,但不确定)。

您可以尝试第二张桌子:

Table2$gene <- sapply(Table2$markerid, function(x) Table1$Gene[grep(x,Table1$marker_id)])

这里有一个虚拟数据帧的示例:

dataA <- data.frame(Gene = LETTERS[1:5], 
                    marker = paste(letters[6:10],"_A"))

  Gene marker
1    A   f _A
2    B   g _A
3    C   h _A
4    D   i _A
5    E   j _A
dataB <- data.frame(marker = letters[6:8])
  marker
1      f
2      g
3      h

现在,如果您使用sapply功能:

dataB$Gene <- sapply(dataB$marker, function(x) dataA$Gene[grep(x,dataA$marker)])

1      f    A
2      g    B
3      h    C

看起来您想要得到什么?

如果不起作用,可以提供str(Table1)的输出吗?

© www.soinside.com 2019 - 2024. All rights reserved.