Систематическая замена идентификационных кодов в R - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть 3 фрейма данных, координаты, анно и конвертирование.

ords содержит список координат и идентификационный код для каждого местоположения.Некоторые местоположения имеют несколько координат.

row 36381: NW_003566036.1, 1244298
row 36390: NW_003566036.1, 1317973
row 36396: NW_003566036.1, 1430739

anno содержит данные координат в другой форме, а идентификатор также находится в другой форме.

row 1: CM001169.1, gene, 1965676, LOC100649911
row 3: CM001170.1, gene, 1491294, LOC100647500

преобразование представляет собой отображение 1: 1разные коды идентификаторов от одного к другому.

row 1: NC_015762.1, CM001169.1
row 2: NC_015763.1, CM001170.1

Я хочу вывести новый фрейм данных, который заменяет код идентификатора, используемый в координатах, на код идентификатора, используемый в anno, однако выполнение этого вручную будет ужаснымтак как есть более 5000 локаций.Они не в том же порядке, и некоторые идентификаторы в конвертировании не присутствуют в координатах или в анно.

Я попытался использовать recode (), но это не представляется практичным повторить для 5000+ экземпляров.Я также пробовал mapvalues ​​из пакета plyr, но он не согласился со мной относительно того, что является приемлемым выводом.

Например:

output <- data.frame(mapvalues(coords$ID, from = convert$`old ID`, 
to = convert$`new ID`))

выкачал пустую таблицу / вектор / что-то.

Я получил следующую ошибку:

Error in mapvalues(coords, from = convert$`old code`, to = convert$`new code`) : 
  `x` must be an atomic vector.

, используяэтот код:

output <- mapvalues(coords, from = convert$`old ID`, to = convert$`new ID`)

1 Ответ

1 голос
/ 20 сентября 2019

вы можете внутренне объединить coords с таблицей mapping, а затем внутренне объединить результат с таблицей anno.

Я не знаю имен столбцов, но это было бы что-токак:

library(dplyr)

result <- coords %>% 
    inner_join(mapping, by = c('ID_coords' = 'ID_coords')) %>% 
    inner_join(anno, by = c('ID_anno' = 'ID_anno'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...