我正在尝试添加新列 keywords
这将得到值 TRUE
如果该单词出现在关键字列表中。该值将是 FALSE
如果该词没有出现在 keywordslist
中。我的关键字由超过 100 个单词组成,因此无法手动添加单词。
关键字列表(示例):
thank
impressed
this
我有一个数据框,其值为 id
和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 引发下一个错误:
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/