如何通过前缀匹配使用dplyr连接DataFrame?
用dplyr实现前缀匹配的内连接
要完成这个前缀匹配的内连接需求,你可以用dplyr结合stringr工具来实现,具体操作如下:
- 先加载所需的R包:
library(dplyr) library(stringr)
- 定义原始数据框:
data <- tibble( x = c("ANOTHER", "COMMON", "ZEBRA") ) selection <- tibble( x_prefix = c("A", "B", "CO"), type = c("One type", "Other type", "Other type") )
- 执行前缀匹配的内连接逻辑:
answer <- data %>% # 先做交叉连接,生成两个表的所有行组合 cross_join(selection) %>% # 过滤出x以对应x_prefix为前缀的行,fixed()确保按固定字符串匹配,避免正则规则干扰 filter(str_starts(x, fixed(x_prefix))) %>% # 保留需求中的目标列 select(x, type)
运行后得到的answer就是预期结果:
# A tibble: 2 × 2 x type <chr> <chr> 1 ANOTHER One type 2 COMMON Other type
如果遇到单个x匹配多个x_prefix的场景(比如x="APPLE"同时匹配前缀"A"和"AP"),可以在过滤后追加group_by(x) %>% slice_max(nchar(x_prefix)),来保留最长的前缀匹配结果,按需调整即可。
内容的提问来源于stack exchange,提问作者pietrodito
相关产品推荐
相关产品推荐

