首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >按多个分隔符拆分列,保留分隔符

按多个分隔符拆分列,保留分隔符
EN

Stack Overflow用户
提问于 2018-12-11 08:12:01
回答 2查看 1.3K关注 0票数 6

如何使用%、-和+作为可能的分隔符将字符列拆分为3列,并将分隔符保留在新列中?

示例数据:

代码语言:javascript
复制
data <- data.table(x=c("92.1%+100-200","90.4%-1000+200", "92.8%-200+100", "99.2%-500-200","90.1%+500-200"))

所需数据示例:

代码语言:javascript
复制
data.desired <- data.table(x1=c("92.1%", "90.4%", "92.8%","99.2%","90.1%")
                           , x2=c("+100","-1000","-200","-500","+500")
                           , x3=c("-200","+200","+100","-200","-200"))

很高兴在这个问题上得到一个好的答案和一些帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-11 08:40:55

data.table中,等效项是tstrsplit

代码语言:javascript
复制
data[, c("x1","x2","x3") := tstrsplit(x, "(?<=.)(?=[+-])", perl=TRUE) ]
data
#                x    x1    x2   x3
#1:  92.1%+100-200 92.1%  +100 -200
#2: 90.4%-1000+200 90.4% -1000 +200
#3:  92.8%-200+100 92.8%  -200 +100
#4:  99.2%-500-200 99.2%  -500 -200
#5:  90.1%+500-200 90.1%  +500 -200
票数 3
EN

Stack Overflow用户

发布于 2018-12-11 10:23:30

下面是一个使用base R的选项

代码语言:javascript
复制
cbind(data, read.csv(text = gsub("(?=[+-])", ",", data$x, perl = TRUE), 
    header = FALSE, stringsAsFactors = FALSE, col.names = c('x1', 'x2', 'x3')))
#                x    x1    x2   x3
#1:  92.1%+100-200 92.1%   100 -200
#2: 90.4%-1000+200 90.4% -1000  200
#3:  92.8%-200+100 92.8%  -200  100
#4:  99.2%-500-200 99.2%  -500 -200
#5:  90.1%+500-200 90.1%   500 -200
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53715609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档