gpt4 book ai didi

r - Tidyverse:从关键字列表中匹配字符串中的单词

转载 作者:行者123 更新时间:2023-12-05 02:35:19 25 4
gpt4 key购买 nike

我正在尝试编写一些代码来检查字符串是否包含术语列表中包含的任何单词,以便在数据框中创建一个新列。

这是术语列表: vehicles <- c('vehicle', 'mazda', 'nissan', 'ford', 'honda', 'chevrolet', 'toyota')

我正在搜索的字符串示例包括:“2001 honda civic”、“2003 nissan altima”、“2005 mazda 5”等(这些是下面代码中的 asset_name)。

我的简化代码如下所示:

df %>%
mutate(
asset_type = case_when(
vehicles %in% asset_name == TRUE ~ 'vehicle', # this doesn't work, obviously
<CODE THAT DOES WORK HERE!!!>
TRUE ~ asset_name
)
)

我试过了 str_detect , str_extract , grepl & 一个自定义函数,但似乎无法弄清楚如何使它工作。

我知道对于每个 asset_name条目,我需要遍历车辆列表以查看其中一个车型是否在 asset_name 中但我似乎无法让它发挥作用。咕噜……

提前致谢!!!

最佳答案

一种方法可能是构建车辆术语的正则表达式交替,然后使用 grepl 进行匹配:

vehicles <- c('vehicle', 'mazda', 'nissan', 'ford', 'honda', 'chevrolet', 'toyota')
regex <- paste0("\\b(?:", paste(vehicles, collapse="|"), ")\\b")

df %>%
mutate(
asset_type = case_when(
grepl(regex, asset_name) ~ 'vehicle',
<CODE THAT DOES WORK HERE!!!>
TRUE ~ asset_name
)
)

关于r - Tidyverse:从关键字列表中匹配字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70602890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com