我想我知道如何做这个问题的所有部分,我只是在把它们放在一起时遇到了问题(除了一个小问题之外)。
我有两个数据集。一个叫"old_id“,一个叫"new_id”。旧的"ID“是7个字符(9个字符,包括连字符...示例: EX-123-45)。新的ID格式为9个字符(11个字符,包括连字符...示例: 88EX-123-45)。有一些old_ids被转换为new_ids,但前面添加了88或55。所有其他新的id前面都有22,我需要避免这些,因为它们有重复的id作为"old_id“,但前面有22。
我想要做的是能够将"old_ids“的信息与"new_ids”匹配,这是旧id的新id (lol)。
我知道我可以用
data ID_5;
set new_id;
ID5 = substr(right(id),2);
run;
这就去掉了前导数字,我可以在上面进行匹配。有了这两个文件,我就没有办法找回前导变量了(据我所知)。如果new_id中"ID“的最后9个字符与old_id匹配,我可以编写一条if语句来匹配吗?如果new_id中ID的前导字符= 88或55。
我所拥有的数据的外观以及我想要的最终结果的示例
data for old_id.. this also contains 22 overrides (only about 20 though)
location ProductID destination
1 EX-123-45 724
1 EX-12A-B3 724 /* not all old ids have an override*/
5 EX-ABC-12 515
5 EX-ABC-14 953
7 22EX-ZYX-12 007
7 22EX-LMN-12 056
new_id文件
location ID destination
1 22EX-123-45 894
1 55EX-123-45 785
5 22EX-987-45 999
5 88EX-ABC-14 881
7 22EX-ZYX-12 678
7 22EX-LMN-12 254
我希望它看起来是什么样子
location ProductID destination
1 22EX-123-45 894
1 55EX-123-45 724 /*old_id overrides destination*/
5 22EX-987-45 999
5 88EX-ABC-14 953 /*old_id overrides destination*/
7 22EX-ZYX-12 007 /*overwrites new_id destination*/
7 22EX-LMN-12 056 /*overwrites new_id destination*/
大多数22没有覆盖。
https://stackoverflow.com/questions/56993364
复制相似问题