如何在 SAS 中创建一个同时考虑更多字段的字段
how to do create a field in SAS that consider more fields at the same time
我在 SAS
中有一个 table,其中 n
个字段称为 check1, check2, ... , checkN
。每个字段都可以是 "OK" 或 "KO"。如果每个支票都是 "OK",我想生成一个字段 "OK",如果其中一个支票是 "KO",它就是 "KO"。我该怎么办?
提前致谢
最简单的方法是声明数组,然后在字段之间做一个简单的 'do' 循环。
在此代码中,我添加了一个步骤,如果其中一个字段具有 "KO",则告诉程序停止扫描检查。
我已经设置了一些示例数据,其中 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';
我在 SAS
中有一个 table,其中 n
个字段称为 check1, check2, ... , checkN
。每个字段都可以是 "OK" 或 "KO"。如果每个支票都是 "OK",我想生成一个字段 "OK",如果其中一个支票是 "KO",它就是 "KO"。我该怎么办?
提前致谢
最简单的方法是声明数组,然后在字段之间做一个简单的 'do' 循环。 在此代码中,我添加了一个步骤,如果其中一个字段具有 "KO",则告诉程序停止扫描检查。 我已经设置了一些示例数据,其中 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';