特定列的拆分字符串

时间:2015-01-27 09:21:27

标签: regex r string-split

我有一个这样的文件:

       V1                                               V2
1 1-500891               CGCGACCTCAGATCAGACGTGGCGACCCGCTGAA
2 2-280976                           AGGTTCCGGATAAGTAAGAGCC
3 3-223181                           TCTTAACCCGGACCAGAAACTA

我想拆分(并交换)V1列,从而产生以下输出

                                       Sequence    Count
           CGCGACCTCAGATCAGACGTGGCGACCCGCTGAA      500891
                       AGGTTCCGGATAAGTAAGAGCC      280976 
                       TCTTAACCCGGACCAGAAACTA      223181 

我试过这个,但它不起作用:

df_split <- strsplit(as.character(df), split="-", fixed=T)

1 个答案:

答案 0 :(得分:2)

您可以尝试sub删除字符串中的部分,直到-

df$V1 <- sub('.*-', '', df$V1)
df
#     V1                                 V2
#1 500891 CGCGACCTCAGATCAGACGTGGCGACCCGCTGAA
#2 280976             AGGTTCCGGATAAGTAAGAGCC
#3 223181             TCTTAACCCGGACCAGAAACTA

您在整个数据集上应用strsplit而不是特定列(“V1”)。在这里,您可以选择考虑

df$V1 <- sapply(strsplit(as.character(df$V1),
                    split="-", fixed=TRUE),`[`,2)
df$V1
#[1] "500891" "280976" "223181"

使用tidyr

的选项
library(tidyr)
extract(df, 'V1', 'Count', '.*-(.*)')
 #  Count                                 V2
 #1 500891 CGCGACCTCAGATCAGACGTGGCGACCCGCTGAA
 #2 280976             AGGTTCCGGATAAGTAAGAGCC
 #3 223181             TCTTAACCCGGACCAGAAACTA