如何在列中找到单词

时间:2018-06-29 15:14:21

标签: r

如果“关键字”包含“完成”(如果可能,还包含单词的变体,例如“完成”,“完成”),则我有代码在新列中输入Y或N,然后是Y,否则为N。 我的问题是,当单词中的大写字母或由“,”,“ /”或“-”分隔时,代码不起作用。你能帮忙吗?

id_base_full$Completion.Flag <- 0

x <- nrow(id_base_full)

for(i in 1:x){

  if (grepl("Complete",id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else if (grepl("complete",id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else if (grepl("Complet" ,id_base_full$HI.Keywords[i])){
    id_base_full$Completion.Flag[i] <- "Y"
  }else{ 
    id_base_full$Completion.Flag[i] <- "N" 
  }
  next [i]
} 

1 个答案:

答案 0 :(得分:1)

这样的事情应该可以实现您想要的:

id_base_full$Completion.Flag <- "N"
id_base_full$Completion.Flag[grepl("complete?", ignore.case=TRUE, id_base_full$HI.Keywords)] <- "Y"

这个想法是在到处创建带有“ N”的列,然后对于找到单词complet(末尾带有可选e)的行,将值设置为“ Y”。

在正则表达式中,?表示前一个字符(此处为e)出现0或1,grepl将返回TRUE / FALSE逻辑向量,从而可以选择适当的行。

为了比Y / N更直接,我将布尔值保留在结果数据集中,并带有:

id_base_full$Completion.Flag <- grepl("complete?", ignore.case=TRUE, id_base_full$HI.Keywords)