Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用r将一列拆分为两列_R - Fatal编程技术网

使用r将一列拆分为两列

使用r将一列拆分为两列,r,R,我想用“*”将V2列拆分为两列 V1 V2 r1 (Direct)*(Mary*(Sewnf 45*S-a)) r2 (Ax 70a12*Qunion)*(Kin - 32431*Tip) r3 (PAN*Q-23)*(BE 05/514/10) 然后我可以看到下面 V1 V2 V3 r1 (Dire

我想用“*”将V2列拆分为两列

V1                                  V2
r1      (Direct)*(Mary*(Sewnf 45*S-a))
r2 (Ax 70a12*Qunion)*(Kin - 32431*Tip)
r3           (PAN*Q-23)*(BE 05/514/10)
然后我可以看到下面

V1                V2                          V3
r1           (Direct        Mary*(Sewnf 45*S-a))
r2  (Ax 70a12*Qunion            Kin - 32431*Tip)
r3         (PAN*Q-23               BE 05/514/10)
这是我尝试过的东西,但显然没有达到我的目标

library(stringr)
str_split_fixed(as.character(data$V2), '\\)*(', 2)
str_split_fixed(as.character(data$V2), '\\)*\\(', 2)
也在努力

strsplit(as.character(data$V2), '\\)*(')
如何修改脚本?

我们可以使用sep来完成此操作,方法是指定sep以匹配a,后跟a*和a。这些是元字符,即可以作为一个组捕获,而*表示0个或多个字符,因此需要转义\\以解析文字字符。使用extra=merge时,它仅在该匹配的第一个实例中拆分,其他实例合并到第二列,即“V3”

library(tidyr)
separate(df1, V2, into = c("V2", "V3"), "\\)\\*\\(", extra = "merge")
#  V1               V2                   V3
#1 r1          (Direct Mary*(Sewnf 45*S-a))
#2 r2 (Ax 70a12*Qunion     Kin - 32431*Tip)
#3 r3        (PAN*Q-23        BE 05/514/10)
在OP的代码中,所有的元字符都没有转义

library(stringr)
data[,c("V2","V3")] <- str_split_fixed(as.character(data$V2), ")*(", 2)
这应该管用