在 R 中编写 Ifelese 命令来检测某个单词是否出现在 Dataframe 中

问题描述 投票:0回答:1

我想根据特定术语词典是否出现在文本数据中创建一个数据框列。

我当前有一个数据框,其中

text
列包含不同的文本。我想在该数据框中创建一个新变量,用于检测字典中的单词是否出现在任何给定文本中(编码为 1),或者字典中的单词是否出现在任何给定文本中(编码为0).

我已经创建了一个包含三个术语的

animals_dict
字典:“猫”、“狗”和“鱼”。到目前为止,我的代码在我的数据框中创建了一个新列,但所有值都显示为 0。

data_zoo <- mutate(data_zoo, animals = if_else(text=="animals_dict", 1, 0)) 

我认为问题在于这段代码正在检测我的文本列中的行是否显示为“animals_dict”,而不是检测我的动物字典中的单词是否出现在该文本中。

r text binary rstudio
1个回答
0
投票

您可以使用

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

© www.soinside.com 2019 - 2024. All rights reserved.