基于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))