Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于R中模式列表的模糊匹配_R_String_Fuzzy Comparison - Fatal编程技术网

基于R中模式列表的模糊匹配

基于R中模式列表的模糊匹配,r,string,fuzzy-comparison,R,String,Fuzzy Comparison,我需要根据模式列表生成一个虚拟变量 df <- data.frame( med = c("sivastatin", "sisvatatin", "rusvastatin", "yes", "no", "don't remember", "true", "false", "omega 3", "ato

我需要根据模式列表生成一个虚拟变量

df <- data.frame(
  med = c("sivastatin", "sisvatatin", "rusvastatin", "yes", "no", "don't remember", "true", "false", "omega 3", "atorvastatin", "no")
)


谢谢大家的帮助

这是问题的解决方案:


df$med_cat <- ifelse(apply(sapply(yes, agrepl, df$med_cholstand, .1), 1, any), 1,
                             ifelse(apply(sapply(no, agrepl, df$med_cholstand, .1), 1, any), 0, NA))



df$med_cat您需要
+(grepl(粘贴0(\\b(“,粘贴(yes,collapse=“|”)\\b),df$med))
谢谢@akrun,但它仍然不能解决所有问题。当它不是像“sivastatin”、“sisvatatin”这样的确切模式时,它仍然不存在(如果拼写有一些变化,您可以使用
fuzzyjoin
您可以使用反转ie
+!grepl(sprintf(\\b(%s)\\b),paste0(no,collapse=“|”)和df$med)
df$med_cat <- ifelse(apply(sapply(yes, agrepl, df$med_cholstand, .1), 1, any), 1,
                             ifelse(apply(sapply(no, agrepl, df$med_cholstand, .1), 1, any), 0, NA))


df$med_cat <- ifelse(apply(sapply(yes, agrepl, df$med_cholstand, .1), 1, any), 1,
                             ifelse(apply(sapply(no, agrepl, df$med_cholstand, .1), 1, any), 0, NA))