使用sas在单个数据集中搜索和匹配观察

时间:2013-05-01 12:28:15

标签: sas

我有这样的数据,

external-id M1 M2 M3 M4 M5 VAR1 VAR2 VAR3 VAR4 VAR5
P1          AA AG ZZ -/- GG
P2          AA AA AA GG  GG

我想看到P1和P2都包含相同的数据,如果相同,我将给予相等的其他不相等的值并将它们存储在dummyvariables VAR1到VAR5中。我如何在SAS中执行此操作?

我期待这样的数据

external-id M1 M2 M3 M4 M5   VAR1 VAR2 VAR3 VAR4 VAR5
P1          AA AG ZZ -/- GG  EQ   NE   EQ    EQ  EQ
P2          AA AA AA GG  GG

我想考虑P1或P2是否有ZZ, - / - 是相等的。数组编程对此有用吗?

1 个答案:

答案 0 :(得分:1)

这可能不是一个好主意,因为听起来您的数据结构需要重新考虑。特别是,结束数据结构似乎并不十分有用;但也许你会给出一小部分例子来理解你的真实目的。

那就是说,这是你如何做这个具体的例子。如果您有其他注意事项,这可能会也可能不会。

我在IFC()分支中使用LAG;如果您使用IF,则不能以这种方式使用LAG,因为它无法按预期工作 - 您需要将LAG转换为一组新的临时变量,或者您需要使用RETAIN。

data have;
input (externalid M1 M2 M3 M4 M5) ($);
datalines;
P1          AA AG ZZ -/- GG
P2          AA AA AA GG  GG
;;;;
run;


data want;
set have;
array ms m1-m5;
array vars $ var1-var5;
do _t = 1 to dim(ms);
  vars[_t] = ifc(ms[_t]=lag(ms[_t]) or ms[_t] in ('ZZ','-/-') or lag(ms[_t]) in ('ZZ','-/-'),'EQ','NE');
end;
if _N_ = 1 then call missing(of vars[*]);
drop _t;
run;
相关问题