2017-11-08 57 views
1

新しい変数を作成し、値の範囲に基づいて再コーディングする方法があるのだろうかと思っていました。範囲を与えることは可能ですか、それぞれの値を指定する必要があります。新しい変数の作成と再コード化SAS

data recode ; 
set old ; 
if value = 
{(291.0-291.5) OR (295.2) OR (297.3- 297.7) OR (300.5) OR (305.8)} 
then care = 'new' ; 
if value = 
{(500.1-501.5) OR (595.2)} 
then care = 'old'; 
ELSE care = 'other'; 
run ; 
+0

'proc format'を見てください:http://www2.sas.com/proceedings/sugi27/p056-27.pdf –

答えて

2

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 FORMATCNTLINオプションを参照)、またはExcelまたは何でも。

また、配列を設定し、さまざまな配列値に対して値をチェックすることもできます。

他にも解決策がありますが、フォーマットは特に複雑ではなく、特にあなたの特定のニーズに最も適しています。

関連する問題