R 检查是否有一列';s值包含在另一列';s,然后将包含的列添加为新列

R 检查是否有一列';s值包含在另一列';s,然后将包含的列添加为新列,r,string,dataframe,dplyr,R,String,Dataframe,Dplyr,我有这个数据帧 D1$document=Emily 1.1.1。 D2$user\u name=Emily 我希望匹配D2是否与D1匹配,如果D2$user_name列值(按行)也包含在D1$document value by row中,则添加D2$user_name对应值,该值位于D1中的一个新列中,该列也称为D1$user_name 我试过stru_-detect、match等,但似乎做不好 unigram_data$user_name <- unigram_data %>% m

我有这个数据帧

D1$document=Emily 1.1.1。 D2$user\u name=Emily

我希望匹配D2是否与D1匹配,如果D2$user_name列值(按行)也包含在D1$document value by row中,则添加D2$user_name对应值,该值位于D1中的一个新列中,该列也称为D1$user_name

我试过stru_-detect、match等,但似乎做不好

unigram_data$user_name <- unigram_data %>% mutate(user_name = ifelse(str_detect(as.character(unigram_data$document)
                                , as.character(review_corpus$user_name)), 
                                cbind(user_name = review_corpus$user_name),
                                NA
                                ))

Thank you!
unigram\u data$user\u name%变异(user\u name=ifelse(str\u detect)(as.character(unigram\u data$document)
,as.character(查看语料库$user\u name)),
cbind(user\u name=review\u corpus$user\u name),
NA
))
非常感谢。

是的,如果没有一个可复制的最小示例,就不可能给出准确的建议。但是,这里有一个通用示例,使用
case\u当
str\u检测时

dplyr::starwars %>% 
  select(name,homeworld,species) %>% 
  mutate(IsHuman = str_detect(species,'Human')) %>% 
  mutate(HumanFromNaboo = case_when(
    species == 'Human' & IsHuman == T ~ T,
    T ~ F
  ))

您需要为
unigram_data
data.frame创建一个可复制的示例。并添加相关的library()调用。