Добавить значение из столбца в одной таблице на основе поиска результата в другом в R - PullRequest
0 голосов
/ 03 марта 2020

У меня есть таблица данных в 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  |

Я хотел бы добавить столбец гена в таблицу два для маркера, который соответствует соответствующему гену в таблице один. В таблице 1 маркерные идентификаторы разделены точкой с запятой, а маркерный идентификатор будет когда-либо появляться только в пределах одной строки гена в таблице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.

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

1 Ответ

1 голос
/ 03 марта 2020

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

Вы можете попробовать на второй таблице:

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)?

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