使用SAS为不同的重复项创建id

时间:2015-10-20 10:20:36

标签: sas

我正在解决数据质量问题,特别是使用COMPGED和COMPLEV函数检测带有模糊逻辑的重复项。

我已经检测到重复,但每对情侣 例如:
假设customer_id等于01,02和03的客户引用同一客户(让我们称他为John),我的SAS程序就会这样检测到:

duplicate_id customer_id
01-02 01
01-02 02
01-03 01
01-03 03
02-03 02
02-03 03

其中duplicate_id是我创建的ID,它将两个客户ID组合在一起,以引用一些重复项。

所以我现在想要的是给John一个唯一的id!

我想要的最终结果是:
duplicate_id customer_id unique_id
01-02 01 01
01-02 02 01
01-03 01 01
01-03 03 01
02-03 02 01
02-03 03 01

(Unique_id是 ID,与customer_id不同。这意味着01是新ID, NOT 是customer_id的第一次出现。

我有想法使用无向图(运算研究算法),但我没有它的许可证,我也不确定即使它有效,我是否可以影响新的id。 / p>

有什么想法吗? 谢谢 !

1 个答案:

答案 0 :(得分:0)

您可以为每个id组创建一个by。这是通过对数据集进行排序,然后将by groupfirst. processingretain语句结合使用来完成的。

例如,

proc sort data = <lib>.<data> ;
   by name <other ids, etc>;
run;
quit;


data <lib>.<data>;
   set <lib>.<data>;
   by name; /* by sort from above */

   format id 10.;

   if first.name then id = 0;
      retain id;
      id = id + 1;
run;

修改

...然后使用uuidgen函数参考here创建ID。

希望这会有所帮助。