是否存在一个 R 函数,该函数联接包含在另一个键中的键

Is there an R function that joins a key that is contained within another key

提问人:sebastian.mendoza 提问时间:8/1/2023 最后编辑:Tillsebastian.mendoza 更新时间:8/1/2023 访问量:38

问:

我正在尝试根据在每个表中创建的用于标识处方药的代码来连接两个表。问题在于,药物代码有时会在一个表格的末尾有额外的数字。参见例如:

  • ncdnum 表 1:4988472401
  • ncdnum 表 2:49884724

有没有办法连接这两个表,以便表1与表2连接,并具有该基本NDCNUM代码。

我尝试了左连接,但由于没有一个值彼此相等,因此没有连接任何值。

TopNDCCodes <- left_join(ndcnum, 
                         ndccodes, 
                         by = c("ndcnum" = "new_NDC_Product")) 

enter image description here enter image description here

r left-join 模糊连接

评论

1赞 Jon Spring 8/1/2023
我认为有一个指标可以帮助确定连续匹配的数量,您可以在包中使用它来执行此连接。或者,如果基本字符串是可预测的长度,则可以提取该字符串并将其连接起来。stringdistfuzzyjoin
1赞 LMc 8/1/2023
@JonSpring 还具有在此处可能有用的连接函数。例如,如果 ncdnum 表 1 以与 ncdnum 表 2 相同的顺序开始,则匹配。fuzzyjoinfuzzyjoin::regex_*

答:

0赞 Till 8/1/2023 #1

如果确定 的前 8 位数字始终唯一标识行,则以下操作应该有效:ndcnum

ndcnum_mod <- 
  ndcnum |> 
  mutate(ndcnum = substring(ndcnum, 1, 8))

TopNDCCodes <- left_join(ndcnum_mod, 
                         ndccodes, 
                         by = c("ndcnum" = "new_NDC_Product")) 

评论

0赞 sebastian.mendoza 8/1/2023
谢谢 Till,不幸的是,代码的长度可能不同。它们仅对表中的匹配代码是唯一的,该代码会添加额外的数字来描述处方的药物量。同时查看其他评论。