【发布时间】:2022-01-08 19:27:43
【问题描述】:
我正在与OPS codes 合作,它对在医院执行的程序类型进行编码。 OPS 编码列表具有 X-XXX.XX 形式的层次结构,其中 X 是数字。编码结构是分层的,这意味着,第一个X- 是一个大集合,然后XXX 表示第一个X- 中的子集类型,最后一个.XX 表示XXX 的子专业化
所以代码可能是X-XXX、X-XXX.、X-XXX.X、X-XXX.XX
我的问题是我们使用的程序将代码结构折叠为XXXX、XXXXX 或XXXXXXX,我想将折叠的与未折叠的 llokup 定义表相匹配。
所以我希望有一个例程来检查每个数字,然后在执行匹配时继续下一个数字。 grepl 不会,因为 5381 将匹配 65381(未折叠的将是 5-381 和 6-538.1),这是完全不同的过程。我需要能够匹配字符到字符(第一个数字第二个数字等)并尊重字符位置的东西。
当找不到完全匹配时,它应该返回匹配相同字符位置的第一个匹配项。
伪代码中的更多示例
which("5381" %in% c("65381","53811", "5382")) 应该返回 2,因为第二项匹配所有提供的可用字符
which("5381" %in% c("538110","538111", "538221")) 应该返回1(因为它是第一个匹配项,c() 中的查找表已排序。
which("5381." %in% c("5381","538111", "538121")) 应该返回1(因为它是第一个匹配项,c() 中的查找表已排序。注意匹配中忽略句点
which("5381.1" %in% c("5381","538111", "538112")) 应该返回 2(因为它的第一个匹配匹配所有可用的五个字符,而我们没有第五个。
我知道这不是 SO 中问题的最佳示例,但我愿意改进这个问题。
【问题讨论】: