选择或减去数据框元素的特定部分

时间:2015-04-15 13:44:21

标签: r

我想只获得属于数据框的元素的一部分。

我的数据框有1列,6000行,如下所示:

chr5_122424840_122523745_NM_001136239_mRNA
chr17_38632079_38657854_NM_032865_mRNA

我想获得一个只有

的新数据框
NM_001136239
NM_032865

我尝试使用split然后使用paste,但它无效,因为它在粘贴时消除了零(NM_1136239而不是NM_001136239)

我也试过stri_subsubstr,但NM之前的长度在每一行都不相同。另外gsub但我不知道该怎么做。

非常感谢你的帮助,我希望我已经足够具体了。

2 个答案:

答案 0 :(得分:2)

这应该有效

<强> 数据

df <- data.frame(col=c("chr5_122424840_122523745_NM_001136239_mRNA",
                       "chr17_38632079_38657854_NM_032865_mRNA"))

<强> 代码

df$col <- sub(".*(NM.*)_mRNA", "\\1", df$col)

只要字符串包含NM并以_mRNA

结尾

答案 1 :(得分:1)

有很多方法可以做。这是一个使用库stringr。我只是推荐它,因为代码更容易理解

library(stringr)
patron <- "NM_[0-9]+" # NM_ pasted to any number of digits
str_extract(your_data_frame$your_column, patron) # Assign to a column or not