Как искать несколько шаблонов в каждой ячейке двух разных фреймов данных в R - PullRequest
0 голосов
/ 09 июля 2020

У меня есть два фрейма данных

reference <- structure(list(GenomicPosition = c("rs63750445",  "rs63750847", "rs1259157720, rs63751666, rs63751263"), `Genomic Region` = c("CodingExon 16", "Coding Exon 16", "Coding Exon14")), row.names = 19:21, class = "data.frame")

map <- structure(list(GenomicPosition = c("rs63751666, rs1259157720", "rs63750445",  "rs6375886, rs63751263"), `Genomic Region` = c("CodingExon 16", "Coding exon 4", "Coding Exon 16")),  row.names = 19:21, class = "data.frame")

Я хотел узнать, есть ли какое-нибудь простое решение для поиска нескольких строк в одном фрейме данных и проверки нескольких строк в другом фрейме данных. Здесь я хочу сравнить rs[digits] в столбце Genomi c положение каждого фрейма данных и посмотреть, есть ли у них соответствующие rsID в фрейме данных карты.

Я хочу получить следующий результат:

> map
GenomicPosition              Genomic Region           Matched_in_both_DF
rs63751666, rs1259157720      CodingExon 16            rs1259157720, rs63751666 
rs63750445                   Coding exon 4            rs63750445
rs6375886, rs63751263         Coding Exon 16           rs63751263

1 Ответ

1 голос
/ 09 июля 2020

Вот один из способов разделения строк по запятой:

vec <- unlist(strsplit(reference$GenomicPosition, ',\\s*'))
map$Matched_in_both_DF <- sapply(strsplit(map$GenomicPosition, ',\\s*'), 
                                  function(x) toString(x[x %in% vec]))


map
#            GenomicPosition Genomic Region       Matched_in_both_DF
#19 rs63751666, rs1259157720  CodingExon 16 rs63751666, rs1259157720
#20               rs63750445  Coding exon 4               rs63750445
#21    rs6375886, rs63751263 Coding Exon 16               rs63751263
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...