我对 SAS 中的 do 循环很陌生,我知道我正在尝试让这个循环像 MATLAB 脚本一样工作。我没有在网上找到很多有用的提示,因为大多数 do-loop 示例只是用于计算,而不是实际检查当前行之前的行是否具有相同的值。
这是我需要解决的问题:
我想看看下面的每个保单号码,看看之前的保单号码是否相同,如果是,我想标记它。
Policy
26X0118907
26X0375309
26X0375309
26X0527509
我会考虑i=1
成为第一个策略(26X0118907
)和i=2
第二个策略(26X0375309
)。
在这种情况下,根据下面的代码(不起作用),这个增量将被标记为“B”。你知道如何正确编码这样的情况吗?
data AF_Inforce_&thestate.;
set AF_Inforce_&thestate.;
by Rating_St;
if first.Rating_St then counter=0;
counter+1;
myloop:
do i=2 to counter;
P2(i)=Policy(i);
P1(i)=Policy(i-1);
if P1(i)=P2(i) then flag='A';
else flag='B';
end;
return;
run;