SASにはin
演算子がありますが、これは整数またはリストでのみ機能するため、動作しません。それは明示的に範囲では動作しません。動作します
最小の変更は次のとおりです。入力の手間をだ
data recode ;
set old ;
if ((291.0 le value le 291.5) OR (297.3 le value le 297.7) OR (value in (295.2,300.5,305.8)))
then care = 'new' ;
if 500.1 le value le 501.5 or value=595.2
then care = 'old';
ELSE care = 'other';
run ;
、しかし。
PROC FORMAT
は、J_Lardが指摘するように、素晴らしいアイデアです。
proc format;
value caref
291.0-291.5,297.3-297.7,295.2,300.5,305.8 = 'new'
500.1-501.5, 595.2 = 'old'
other='other'
;
quit;
data _null_;
input value;
care=put(value,caref.);
put value= care=;
datalines;
200
291
291.3
291.7
297.0
297.5
295.2
300.5
300.7
500.0
500.1
500.5
595.2
595.5
;;;;
run;
これらの範囲はそれでうまく動作し、そしてあなたは、データファイルからそれらを読み込むことができます(PROC FORMAT
上CNTLIN
オプションを参照)、またはExcelまたは何でも。
また、配列を設定し、さまざまな配列値に対して値をチェックすることもできます。
他にも解決策がありますが、フォーマットは特に複雑ではなく、特にあなたの特定のニーズに最も適しています。
出典
2017-11-08 18:50:53
Joe
'proc format'を見てください:http://www2.sas.com/proceedings/sugi27/p056-27.pdf –