r - 如果字符串包含列表中的元素,则创建新的条件列

标签 r list dplyr

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

关键字列表(示例):

thank
impressed
this

我有一个数据框,其值为 idword ,我取消了单词的嵌套并按 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 引发下一个错误:

Error in mutate_impl(.data, dots) : Evaluation error: is.data.frame(data) is not TRUE.

  • 我尝试了 grepl 的一些不同变体:

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

  • 这引发了以下错误:

    Error in mutate_impl(.data, dots) : Evaluation error: is.data.frame(data) is not TRUE. In addition: Warning message: In grepl(keywordslist, keywords) : argument 'pattern' has length > 1 and only the first element will be used

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

    最佳答案

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

    应该这样做

    关于r - 如果字符串包含列表中的元素,则创建新的条件列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870731/

    相关文章:

    r - 使用 ggplot2 在较小的中断处放置轴标签

    java - 如何反射(reflect)过滤列表中的更改

    C 如何计算没有循环的列表的平均值?

    java - 在 Java 中将列表或单个列表项作为方法参数传递是否更有效?

    r - 有没有办法使用字符串变量向 dplyr 函数提供参数?这个叫什么?

    r - ggplot 堆积面积

    按名称返回所有因子级别作为来自三列数据的新列。表 [R]

    r - 变异多个变量以创建多个新变量

    r - 如何在 R 中将宽嵌套数据 reshape 为长格式?

    r - dplyr:在group_by()之后在summary()中使用自定义函数