使用r将一列拆分为两列
我想用“*”将V2列拆分为两列使用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
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)
这应该管用