Как преобразовать одно значение в соответствующее из таблицы преобразования в R?

#r #dataframe #replace #find-replace

Вопрос:

Я приношу извинения, если формулировка моего вопроса не имела большого смысла, но, надеюсь, мое объяснение поможет.

Допустим, у меня есть ex фрейм данных , который выглядит так:

   geneID sample1 sample2
1      1      18       2
2     10       6      17
3    100       9      12
 

И соответствующая таблица, convtab , которая выглядит так:

   geneID genesymbol
1      1       A1BG
2     10       NAT2
3    100        ADA
 

Цель здесь состоит в том , чтобы для каждого генеида в ex , если он соответствует значению в convtab$geneID , заменить его соответствующим значением из convtab$genesymbol той же строки.

Например, значение в [1,1] ex , равное 1, будет заменено на A1BG.

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

Я был бы очень признателен за помощь!

Комментарии:

1. ex$geneID <- convtab$genesymbol[match(ex$geneID, convtab$geneID)]

2. К вашему сведению, вы сказали «если это совпадает» , предполагая, что это может не всегда совпадать. Если отсутствует совпадение, то этот код будет неполным, что приведет к тому, что ваши не совпадающие идентификаторы будут выглядеть как NA .

Ответ №1:

Как отмечается в комментариях, это можно сделать следующим образом:

  ex$geneID <- convtab$genesymbol[match(ex$geneID, convtab$geneID)]
 

Ответ №2:

Используя dplyr вы могли бы left_join данные.кадры:

 library(dplyr)

ex %>%
  left_join(rep, by=("geneID")) %>%
  select(-geneID, geneID=genesymbol)
 

ВОЗВРАТ

 # A tibble: 3 x 3
  sample1 sample2 geneID
    <dbl>   <dbl> <chr> 
1      18       2 A1BG  
2       6      17 NAT2  
3       9      12 ADA