如果“关键字”包含“完成”(如果可能,还包含单词的变体,例如“完成”,“完成”),则我有代码在新列中输入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]
}
答案 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)