MLP*_*NPC -1 arrays sas do-loops
我有一个类似于下面的数据集:
ID COL70 COL71 COL72 COL73 COL74
1 4 3 2 -998 .
2 2 0 2 1 -998
3 1 -998 -998 . .
4 3 4 -998 -998 -998
Run Code Online (Sandbox Code Playgroud)
我想要做的是让一个新列让我们称之为NEWCOL,它具有从COL74向后看的第一个非负值,所以它看起来如下:
ID COL70 COL71 COL72 COL73 COL74 NEWCOL
1 4 3 2 -998 . 2
2 2 0 2 1 -998 1
3 1 -998 -998 . . 1
4 3 4 -998 -998 -998 4
Run Code Online (Sandbox Code Playgroud)
我在WPS工作,所以这需要在SAS或PROC SQL中.
你可以迭代这样的数组.
data have;
array c[*] col70-col74;
input id c[*];
do i = dim(c) to 1 by -1 until(sign(c[i]) eq 1);
newcol=c[i];
end;
if i eq 0 then newcol=.;
cards;
1 4 3 2 -998 .
2 2 0 2 1 -998
3 1 -998 -998 . .
4 3 4 -998 -998 -998
5 -3 -4 -998 -998 -998
;;;;
run;
proc print;
run;
Run Code Online (Sandbox Code Playgroud)