背景问题:
目前我们有一个项目描述列表(1278 obs),其中一些包含产品代码。例如," REF VLOC0004 V LOC 3/0 15CM SUTURE DEVICE"),代码为VLOC0004。
我将其存储为excel文件,我希望说明栏旁边有一列,每个说明旁边都填写了商品代码。
目前完成的工作:
我已经设法将数据加载到R中并且能够为正则表达式编写自己的模式(如果我觉得我不能完成拾取一些代码串的任务,我可能会复活它)。 E.g R代码如下。
# Pattern
p=("([A-Z]*[0-9]{4,}[A-Z]*)|([0-9]+[:punct:][0-9]+)|([0-9]+[:punct:][0-9]+[:punct:][0-9]+)")
# Match data from regexpr()
m<-regexpr(p,EGIA$LGY_DHB_ITEM_DESCRIPTION)
问题:
当我运行regmatches来提取上面的模式时,它只提取找到的匹配并忽略其中没有代码的描述。结果是它创建了一个长度仅为608的向量。如果我在项目描述旁边使用此列,则代码不会与说明对齐。我需要的是这个向量以某种方式给出了一个空白点,其中找不到项目代码,因此该提取向量与项目描述的长度相同。
我使用逆命令玩了但是它没有用。任何有关这方面的帮助将不胜感激,我已经浏览了许多关于正则表达式和本网站的教程,但我对信息感到不知所措,其中没有一个似乎相关。
答案 0 :(得分:0)
可以对str_detect
+ ifelse
进行简单组合。当然还有很多其他方法可以做到这一点。
library(stringr)
str <- c("ab", "bc", "cd")
yes <- str_detect(str, "c")
ifelse(yes==T, "c", NA)
#NA "c" "c"