You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何基于包含关系的NDC编码实现表连接?

解决NDC编码末尾带额外数字的表连接问题

针对你遇到的NDC编码末尾数字不一致导致连接失败的问题,这里有几种实用的解决方法:

方法1:截取固定长度的基础编码

如果基础NDC编码是固定长度(比如例子里的8位),直接截取表1编码的对应长度即可:

# 给表1添加基础编码列,截取前8位
ndcnum$ndc_base <- substr(ndcnum$ncdnum, 1, 8)
# 表2的编码已经是基础格式,直接复用或统一列名
ndccodes$ndc_base <- ndccodes$new_NDC_Product
# 基于处理后的列做左连接
TopNDCCodes <- left_join(ndcnum, ndccodes, by = "ndc_base")

方法2:移除末尾所有额外数字

如果额外数字的位数不固定,用正则表达式去掉编码末尾的所有数字:

library(stringr)
# 移除表1编码末尾的数字序列
ndcnum$ndc_base <- str_remove(ndcnum$ncdnum, "\\d+$")
# 用处理后的基础编码和表2连接
TopNDCCodes <- left_join(ndcnum, ndccodes, by = c("ndc_base" = "new_NDC_Product"))

方法3:模糊匹配前缀

如果需要更灵活的匹配逻辑(比如表2编码是表1编码的前缀),可以用fuzzyjoin包实现:

library(fuzzyjoin)
# 匹配规则:表1的编码以表2的编码开头
TopNDCCodes <- fuzzy_left_join(
  ndcnum,
  ndccodes,
  by = c("ncdnum" = "new_NDC_Product"),
  match_fun = function(x, y) str_starts(x, y)
)

注意事项

  • 提前检查数据:确认所有基础编码的格式统一,避免因个别异常编码导致匹配错误
  • 测试正则规则:如果用方法2,要确保正则\\d+$能准确匹配你数据里的额外数字,不会误删有效编码部分

内容的提问来源于stack exchange,提问作者sebastian.mendoza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:12:13