今回は、データセットのオブザベーション数により、処理を分岐させる方法について解説していきたいと思います。
(参考:【SAS】データセットの有無で処理を分岐させる方法【%IF】【EXIST】 | ビジネスイッチ (how-to-business.com))
/* 1オブザベーション*/
data data1;
id1 = "1111";
run;
data data2; set data1;
if id1 = "1111" then output;
run;
data data3;
if NOBS = 0 then do;
id1 = "blank";
output;
end;
set data2 nobs=NOBS;
output;
run;
![](https://how-to-business.com/wp-content/uploads/2023/03/7f262a4f77955ee8a8e2c609c25ef4d8.png)
![](https://how-to-business.com/wp-content/uploads/2023/03/cded615d819b851a82723806e993e519.png)
![](https://how-to-business.com/wp-content/uploads/2023/03/1e90e19118b1c95709ac5e3e68227619.png)
- nobs=NOBSにより、オブザベーション数「1」をNOBSに格納。
- NOBS=1なので、何もせずid1を出力。
/* 0オブザベーション*/
data data1;
id1 = "1111";
run;
data data2; set data1;
if id1 = "2222" then output;
run;
data data3;
if NOBS = 0 then do;
id1 = "blank";
output;
end;
set data2 nobs=NOBS;
output;
run;
![](https://how-to-business.com/wp-content/uploads/2023/03/92ed6a7e66d1c2816f93acc1956a72f0.png)
![](https://how-to-business.com/wp-content/uploads/2023/03/4cd5d6f4807978fc6eeba77503bba8ed.png)
![](https://how-to-business.com/wp-content/uploads/2023/03/3a8a3c187841e09c85443174f466381c.png)
- nobs=NOBSにより、オブザベーション数「0」をNOBSに格納。
- NOBS=0なので、id1=”blank”
/* 空の1オブザベーション */
data data2;
attrib id1 length=$5.;
run;
data data3;
if NOBS = 0 then do;
id1 = "blank";
output;
end;
set data2 nobs=NOBS;
output;
run;
![](https://how-to-business.com/wp-content/uploads/2023/03/e0907659c4626519053b3cee356853f6.png)
![](https://how-to-business.com/wp-content/uploads/2023/03/280ef27e5f770193f31a7cb6c8a3281e.png)
- attribを使うと空の1オブザベーションとなってしまう為、注意。
- nobs=NOBSにより、オブザベーション数「1」をNOBSに格納。
- NOBS=1なので、何もせずid1を出力。