Как я могу использовать R stringr, чтобы оставить только имя гена? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть большая электронная таблица с 3200 наблюдениями, в которой есть список генов в столбце. Однако в столбце есть куча ненужных вещей, которые мне не нужны (пример ниже). Как я могу использовать stringr, чтобы удалить ненужный мусор и оставить только имя гена?

Пример. Имена генов: TEM-126 и ykkD.

gb|AY628199|+|203-1064|ARO:3000988|TEM-126
gb|AL009126|+|1376854-1377172|ARO:3003064|ykkD

Ответы [ 4 ]

1 голос
/ 25 февраля 2020

Использование stringr:

str_split_fixed(genes, '\\|', n = 6)[, 6]
1 голос
/ 25 февраля 2020

Как вы сказали, у вас есть эти имена в столбце, и кажется, что имя гена является последним "словом", вы можете легко сделать это, используя всего два пакета из , dplyr и stringr.

library(dplyr)
library(stringr)

df <- tibble::tribble(
  ~Text,
   "gb|AY628199|+|203-1064|ARO:3000988|TEM-126",
   "gb|AL009126|+|1376854-1377172|ARO:3003064|ykkD"
  )

df %>% 
  mutate(gene = word(Text, start = -1, end = -1, sep = "\\|"))

#> # A tibble: 2 x 2
#>   Text                                           gene   
#>   <chr>                                          <chr>  
#> 1 gb|AY628199|+|203-1064|ARO:3000988|TEM-126     TEM-126
#> 2 gb|AL009126|+|1376854-1377172|ARO:3003064|ykkD ykkD
1 голос
/ 25 февраля 2020

Если ваши имена генов всегда находятся в конце ваших строк, вы можете попробовать код ниже

> gsub(".*\\|","",v)
[1] "TEM-126" "ykkD" 

ДАННЫЕ

v <- c("gb|AY628199|+|203-1064|ARO:3000988|TEM-126",
       "gb|AL009126|+|1376854-1377172|ARO:3003064|ykkD")
0 голосов
/ 25 февраля 2020

Если у вас есть вектор genevec имен генов, вы можете векторизовать функцию:

stringr::str_split(pattern="\\|", string=genevec, simplify=T)[,6]
...