【发布时间】:2021-08-24 16:01:35
【问题描述】:
我有两个数据框。一个包含参考值。另一个包含长字符串。
library(tidyverse)
ref <- tibble(text = c("hello", "how are you", "example"),
value = c(1, 2, 3 ))
df <- tibble(text = c("hello my name is john", "how are you", "some other example"))
我想将values 从ref 分配给df,其中ref$text 出现在df$text 中。
现在,如果我想要完全匹配,这很容易:加入/绑定可以完美地工作:left_join(df, ref, by = "text")。但在这里,它只匹配第二行(相同)并忽略部分匹配。
在某种意义上,我想要left_join() 和str_detect() 的组合或其他类似grep 的模式匹配。 (虽然,我这里其实不需要正则表达式,只需要匹配*ref$text* == df$text)
注意:我很欣赏tidyverse/dplyr 解决方案,但base R 当然也可以。
【问题讨论】: