如何在SAS中创建一个同时考虑更多字段的字段

如何在SAS中创建一个同时考虑更多字段的字段,sas,dataset,Sas,Dataset,我在SAS中有一个表,其中包含n字段,名为check1,check2,检查n。每个字段都可以是“OK”或“KO”。如果每个检查都是“OK”,我想生成一个“OK”字段,如果其中一个检查都是“KO”,那么它就是“KO”。我该怎么办 提前感谢最简单的方法是声明数组,并跨字段执行简单的“do”循环。 在这段代码中,我添加了一个步骤,告诉程序如果其中一个字段有“KO”,就停止扫描checkn。 我已经设置了一些示例数据,其中n=4 data dataset; input ID $ check1 $ che

我在
SAS
中有一个表,其中包含
n
字段,名为
check1,check2,检查n
。每个字段都可以是“OK”或“KO”。如果每个检查都是“OK”,我想生成一个“OK”字段,如果其中一个检查都是“KO”,那么它就是“KO”。我该怎么办


提前感谢

最简单的方法是声明数组,并跨字段执行简单的“do”循环。 在这段代码中,我添加了一个步骤,告诉程序如果其中一个字段有“KO”,就停止扫描checkn。 我已经设置了一些示例数据,其中n=4

data dataset;
input ID $ check1 $ check2 $ check3 $ check4 $;
cards;
A OK OK OK OK
B OK OK OK KO
C KO OK OK OK
D KO KO KO OK
;
run;

data dataset;
set dataset;
array check_array{4} check1-check4;
do i=1 to 4;
if result ne "KO" then do;
if check_array{i}="OK" then result="OK"; else result="KO";
end;
end;
run;

最简单的方法是声明数组,并跨字段执行简单的“do”循环。 在这段代码中,我添加了一个步骤,告诉程序如果其中一个字段有“KO”,就停止扫描checkn。 我已经设置了一些示例数据,其中n=4

data dataset;
input ID $ check1 $ check2 $ check3 $ check4 $;
cards;
A OK OK OK OK
B OK OK OK KO
C KO OK OK OK
D KO KO KO OK
;
run;

data dataset;
set dataset;
array check_array{4} check1-check4;
do i=1 to 4;
if result ne "KO" then do;
if check_array{i}="OK" then result="OK"; else result="KO";
end;
end;
run;
使用WHICHC()函数以及布尔检查,查看它是否大于零。如果有命名约定,则不需要声明数组

 Flag = whichc('KO', of check1-checkN) >0;
编辑:

If WHICHC('KO', of check1-checkN)>0 then flag = 'KO';
Else flag='OK';
使用WHICHC()函数以及布尔检查,查看它是否大于零。如果有命名约定,则不需要声明数组

 Flag = whichc('KO', of check1-checkN) >0;
编辑:

If WHICHC('KO', of check1-checkN)>0 then flag = 'KO';
Else flag='OK';

如果所有字段都包含OK或KO,则可以使用
min
max
函数代替标题。如果所有字段都包含OK或KO,则可以使用
min
max
函数