使用下面的列RelatedToText
,我想创建2个新列Coverage_Type
和Name
。
如果我们能够在最后一个“ - ”符号之前和之后找到内容,那么我认为我应该是好的。但是,如果你看到最后一个案例,在名称的部分之间,即Mayur和Cook之间有一个“ - ”符号。
我的问题有两个问题:首先,我应该如何在最后一个“ - ”符号之前和之后提取内容?其次,如果名称在上面引用的名称中包含破折号,我应该如何正确提取内容?
RelatedToTxt Coverage_Type Name
Collision - NAWADA REALTY, INC Collision NAWADA REALTY, INC
Collision - Don Cooks Collision Don Cooks
Pro Dam - Veh - Spl Lt - Raj Perk Pro Dam - Veh - Spl Lt Raj Perk
Rental Reimbursement - Mayur-Cook Rental Reimbursement Mayur-Cook
示例数据:
RelatedToTxt <- c("Collision - NAWADA REALTY, INC", "Collision - Don Cooks",
"Pro Dam - Veh - Spl Lt - Raj Perk", "Rental Reimbursement - Mayur-Cook")
答案 0 :(得分:1)
尝试使用strsplit
将文本拆分为两列。您可以使用此正则表达式" - "
拆分最终.+\\K\\s-\\s
。 .+\\K
使用贪婪模式.+
尽可能匹配,然后在匹配空格 - 连字符空间模式之前使用\\K
删除匹配的内容。 .+
的贪婪使它可以跳过Pro Dam - Veh - Spl Lt&#34;中的连字符。
strsplit(RelatedToTxt, ".+\\K\\s-\\s", perl = TRUE)
#[[1]]
#[1] "Collision" "NAWADA REALTY, INC"
#
#[[2]]
#[1] "Collision" "Don Cooks"
#
#[[3]]
#[1] "Pro Dam - Veh - Spl Lt" "Raj Perk"
#
#[[4]]
#[1] "Rental Reimbursement" "Mayur-Cook"
可以使用
将输出转换为两列do.call(rbind, strsplit(RelatedToTxt, ".+\\K\\s-\\s", perl = TRUE))