0
我收到了一个扁平化文件,该文件保留有关重复ID记录的信息,而不是附加变量,而不是附加记录。SAS - 比较变量内容和标记变化
例如,下面的数据集:
ResID VarA VarB
XAB2 Red 13
XAB2 Ylw 13
BGH3 Grn 14
FHT1 Prp 13
XAB2 Blu 13
都被拒绝在此:
ResID VarA_1 VarA_2 VarA_3 VarB_1 VarB_2 VarB_3
XAB2 Red Ylw Blu 13 13 13
BGH3 Grn 14
FHT1 Prp 13
正如你所看到的,ID为“XAB2”相关联的所有变量被夷为平地成一个记录,所以所有的信息都可以保留,但数据集仍然可以作为一个人级文件来处理。
这很酷。但是现在我需要调和二人之间的差异。
目前我打算写一系列非常无聊的if/else if语句在数据步骤,如:
if VarA_2 NE " " and VarA_2 EQ VarA_1 then FLAG_VarA_dup = 0;
else if VarA_2 NE " " and VarA_2 NE VarA_1 then FLAG_VarA_dup = 1;
else if VarA_3 NE " " and VarA_3 EQ VarA_2 then FLAG_VarA_dup = 0;
else if VarA_3 NE " " and VarA_3 NE VarA_2 then FLAG_VarA_dup = 1;
/*...etc. for all VarB occurrences, and all other variables in my very wide DS*/
一旦我被标记的变量在其中的DUP住的话我可以比较相关变量并做出关于应该保留或深入研究的决定。但我不禁觉得有一个更优雅或有效的方式来做到这一点。我很想在这里学习一两件事。
更好的解决方案的任何建议?
为避免匹配单词的部分,需要在TRANWRD()函数调用中为两个参数添加分隔符。尽管它的名字TRANWRD()不知道一个词是什么。 – Tom
@Tom如果数据中可能有部分词匹配,这是一个很好的观点。我现在不打算在答案中解决这个问题,如果你想这样做,请随时(在你自己的答案或以上)免费。 – Joe