我想根据特定术语词典是否出现在文本数据中创建一个数据框列。
我当前有一个数据框,其中
text
列包含不同的文本。我想在该数据框中创建一个新变量,用于检测字典中的单词是否出现在任何给定文本中(编码为 1),或者字典中的单词是否出现在任何给定文本中(编码为0).
我已经创建了一个包含三个术语的
animals_dict
字典:“猫”、“狗”和“鱼”。到目前为止,我的代码在我的数据框中创建了一个新列,但所有值都显示为 0。
data_zoo <- mutate(data_zoo, animals = if_else(text=="animals_dict", 1, 0))
我认为问题在于这段代码正在检测我的文本列中的行是否显示为“animals_dict”,而不是检测我的动物字典中的单词是否出现在该文本中。
您可以使用
str_detect
返回这样的逻辑
library(stringr)
library(dplyr)
animals_to_keep = c("cat", "fish", "dog")
examp_data = data.frame(creatures = c("cat", "fish",
"dog", "elephant", "shark", "whale"))
examp_data |>
mutate(animals = if_else(str_detect(creatures, paste(animals_to_keep, collapse = "|")), 1,0))
#> creatures animals
#> 1 cat 1
#> 2 fish 1
#> 3 dog 1
#> 4 elephant 0
#> 5 shark 0
#> 6 whale 0
创建于 2024-07-03,使用 reprex v2.1.0