#r
#r
Вопрос:
У меня есть набор данных клинических испытаний, для которых я хочу создать столбец генов — генов, соответствующих клиническому испытанию, в котором они появляются.
Мой набор данных выглядит так:
Study ID Title Drug
1 Study of placement BRCA2-drug
2 Study of ACE Gene1-drug
3 Another ACE study Gene2-drug
4 Study of NOS3 and ACE ACE-drug
(Просто чтобы отметить, что в моих реальных данных у меня есть еще много столбцов, в которых может отображаться имя гена)
Затем у меня есть список генов:
Gene
ACE
BRCA2
NOS3
HER2
Я хочу создать столбец в моем первом наборе данных, соответствующий гену для изучения, выводя, например:
Gene Study ID Title Drug
BRCA2 1 Study of placement BRCA2-drug
ACE 2 Study of ACE Gene1-drug
ACE 3 Another ACE study Gene2-drug
ACE, NOS3 4 Study of NOS3 and ACE ACE-drug
Я не уверен, с чего начать с этого, особенно с создания столбца, который также позволяет строкам содержать несколько генов, если в этой строке появляется несколько генов. Я пытался использовать dplyr::group_by()
, но не продвинулся далеко.
Входные данные:
#Clinical trials data:
structure(list(StudyID = 1:4, Title = c("Study of placement",
"Study of ACE", "Another ACE study", "Study of NOS3 and ACE"), Drug = c("BRCA2-drug",
"Gene1-drug", "Gene2-drug","ACE-drug")), row.names = c(NA, -4L), class = c("data.table",
"data.frame"))
#Gene list:
structure(list(Gene = c("ACE", "NOS3", "HER2", "BRCA1")), row.names = c(NA,
-4L), class = c("data.table", "data.frame"))
Ответ №1:
Вы можете создать шаблон, объединяющий все гены вместе. Из нескольких столбцов извлеките присутствующие гены и объедините их в один столбец.
library(dplyr)
pat <- paste0(gene_list$Gene, collapse = '|')
trials %>%
mutate(across(.fns = ~str_extract_all(., pat), .names = '{col}_new')) %>%
rowwise() %>%
mutate(Gene = toString(unique(unlist(c_across(ends_with('_new')))))) %>%
select(-ends_with('new'))
# StudyID Title Drug Gene
# <int> <chr> <chr> <chr>
#1 1 Study of placement BRCA2-drug BRCA2
#2 2 Study of ACE Gene1-drug ACE
#3 3 Another ACE study Gene2-drug ACE
#4 4 Study of NOS3 and ACE ACE-drug NOS3, ACE
Обратите внимание, что ваши данные не имеют "BRCA2"
. Я изменил "BRCA1"
на "BRCA2"
.