如何基于特定术语词典在R中创建二元变量
R文本匹配生成二元变量的正确实现
原代码的问题
mutate()里不用写data_zoo$animals,直接用变量名定义新列即可- 原判断条件是把文本和字符串"animals_dict"做完全相等匹配,根本没用到你定义的动物词典,逻辑完全错误
正确代码
先确保加载dplyr和stringr包(没加载的话先运行以下代码):
library(dplyr) library(stringr)
接着执行生成二元变量的代码:
# 把词典转成正则匹配模式,用|分隔多个关键词 animal_pattern <- paste(animals_dict, collapse = "|") # 生成二元变量:包含任一动物术语标记为1,否则为0 data_zoo <- data_zoo %>% mutate(animals = if_else(str_detect(text, animal_pattern), 1, 0))
额外提示
如果需要精确匹配完整单词(避免匹配到"catty"这类包含"cat"的衍生词),可以给词典中的词加上单词边界符:
animal_pattern <- paste0("\\b", animals_dict, "\\b", collapse = "|")
内容的提问来源于stack exchange,提问作者user17896
相关产品推荐
相关产品推荐

