如果字符串包含列表中的元素,则创建新的条件列[重复]

2024-04-12

我正在尝试添加一个新列keywords这将得到价值TRUE如果该单词出现在关键字列表中。该值将是FALSE如果该词没有出现在keywordslist。我的关键字由 100 多个单词组成,因此无法手动添加单词。

关键字列表(示例):

thank
impressed
this

我有一个包含值的数据框id and word,我取消了单词的嵌套并按 id 分组:

id      word
1234    thank
1234    you
1234    very
1234    much
1567    i
1567    am
1567    not
1567    impressed
9654    what
9654    is
9654    this

我希望结果看起来像这样:

id      word       keywords
1234    thank      TRUE
1234    you        FALSE
1234    very       FALSE
1234    much       FALSE
1567    i          FALSE
1567    am         FALSE
1567    not        FALSE
1567    impressed  TRUE
9654    what       FALSE
9654    is         FALSE
9654    this       TRUE

我尝试过的代码如下: 1.:

df <- df %>%
  group_by(id) %>%
  mutate(keywords = ifelse(
  word == rowwise(keywordslist), TRUE, FALSE)

代码 #1 引发下一个错误:

mutate_impl(.data,dots) 中的错误:评估错误: is.data.frame(data) 不为 TRUE。

  1. 我用 grepl 尝试了一些不同的变体:

    df <- df %>% group_by(id) %>% mutate(keywords = ifelse( word == rowwise(grepl(keywordslist, word)), TRUE,FALSE)

这引发了以下错误:

mutate_impl(.data,dots) 中的错误:评估错误: is.data.frame(data) 不为 TRUE。另外:警告消息:在 grepl(keywordslist, keywords) :参数“pattern”的长度> 1 并且只使用第一个元素

我不确定这是否是处理这种情况的正确方法。欢迎任何帮助。


df$keywords <- df$word %in% keywordslist

应该这样做

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果字符串包含列表中的元素,则创建新的条件列[重复] 的相关文章

随机推荐