Regex 如何将此数据文件拆分为三列?
我有一个data.frame,看起来像:Regex 如何将此数据文件拆分为三列?,regex,r,dataframe,Regex,R,Dataframe,我有一个data.frame,看起来像: chr1:29250635-29582124 chr1:46026531-46214183 chr1:46554517-46718374 chr1:51008171-51235816 chr1:63862069-64092146 chr1:78052717-78289590 chr1:85066633-85177704 chr1:94639336-94839130 chr1:97229888-97509581 chr1:98053562-98445381
chr1:29250635-29582124
chr1:46026531-46214183
chr1:46554517-46718374
chr1:51008171-51235816
chr1:63862069-64092146
chr1:78052717-78289590
chr1:85066633-85177704
chr1:94639336-94839130
chr1:97229888-97509581
chr1:98053562-98445381
chr1:114057822-114381300
chr1:115116433-115378793
我想将框架分成三列,如下所示:
CHR BP1 BP2
chr1 29250635 29582124
chr1 46026531 46214183
chr1 46554517 46718374
chr1 51008171 51235816
chr1 63862069 64092146
我该怎么做呢?我们可以用
单独的
library(tidyr)
separate(df1, V1, into = c("CHR", "BP1", "BP2"))
# CHR BP1 BP2
#1 chr1 29250635 29582124
#2 chr1 46026531 46214183
#3 chr1 46554517 46718374
#4 chr1 51008171 51235816
#5 chr1 63862069 64092146
#6 chr1 78052717 78289590
#7 chr1 85066633 85177704
#8 chr1 94639336 94839130
#9 chr1 97229888 97509581
#10 chr1 98053562 98445381
#11 chr1 114057822 114381300
#12 chr1 115116433 115378793
或者使用cSplit
library(splitstackshape)
setnames(cSplit(df1, "V1", "-|:", fixed = FALSE), c("CHR", "BP1", "BP2"))[]
或者在使用sub
将分隔符更改为单个分隔符后,使用read.table
的base R
方法
read.table(text=sub(":", "-", df1$V1), sep="-", header=FALSE,
col.names = c("CHR", "BP1", "BP2"), stringsAsFactors=FALSE)
# CHR BP1 BP2
#1 chr1 29250635 29582124
#2 chr1 46026531 46214183
#3 chr1 46554517 46718374
#4 chr1 51008171 51235816
#5 chr1 63862069 64092146
#6 chr1 78052717 78289590
#7 chr1 85066633 85177704
#8 chr1 94639336 94839130
#9 chr1 97229888 97509581
#10 chr1 98053562 98445381
#11 chr1 114057822 114381300
#12 chr1 115116433 115378793
数据
df1甚至这个
df1 <- structure(list(V1 = c("chr1:29250635-29582124", "chr1:46026531-46214183",
"chr1:46554517-46718374", "chr1:51008171-51235816", "chr1:63862069-64092146",
"chr1:78052717-78289590", "chr1:85066633-85177704", "chr1:94639336-94839130",
"chr1:97229888-97509581", "chr1:98053562-98445381", "chr1:114057822-114381300",
"chr1:115116433-115378793")), .Names = "V1", class = "data.frame", row.names = c(NA,
-12L))