我有一个这样的文件:
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)
答案 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