RECODE
コマンドは、変数の一部またはすべての値を変更するために使用されます。
簡単な例:
RECODE var1 var2 (1,2 = 1) (3,4 = 2).
より複雑な例:
RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.
一般
値 1、2、3、4 の変数 famimpor があり、家族を持つことが回答者にとってどれほど重要かを測定するとします。
RECODE famimpor (4=3).
これは値 4 のすべての発生を値 3 に変更します。 元の値 3 は変更されないままです。 (値のラベルがある場合は、それに応じて今すぐ変更する必要があります)。
RECODE famimpor (1,2 =1) (3,4 = 2).
これは2と3の間のカットオフポイントを持つ2分値を作成します。
RECODE famimpor (1=4) (2=3) (3=2) (4=1).
これは値の順序を逆転させます。 なお、これはCOMPUTE
COMPUTE famimpor = 5 - famimpor.
)でより簡単に実現できます。
新しい変数の作成
一つの問題は、上記の例のすべてが変数の元の値を変更することです。 新しい値から元の値を再構築できる場合 (これは最後の例でのみ可能です!) または、データ セットの有効なコピーを別の場所に持っていることが確実な場合のみ、これを行う必要があります。 幸い、RECODE
INTO NEWVAR
を追加すれば、新しい変数を作成することが可能です。
RECODE famimpor (1,2 =1) (3,4 = 2) INTO famimpod.
これは、2と3の間のカットオフポイントを持つ二項変数を作成するものです。 しかし、古い変数はそのまま残り、二項変数はfamimpodという名前でデータセットに追加されます(「D」は二項変数を持っていることを示します。
しかし、新しい変数に RECODING するときは、いくつかの注意を払わなければならないことに注意してください。 この場合、新しい変数が希望するすべての有効な値を持っていることを確認する必要があります。 RECODE
コマンドが値の一部だけに名前を付けた場合、他のすべての値はシステム欠落値として扱われます。 しかし、この問題に対処する簡単な方法があります。
WRONG: RECODE famimpor (4=3) INTO famimpon.
これは、値 4 のすべての出現を値 3 に変更することになります。 しかし、他のすべての値はシステム欠落として扱われます。
RECODE famimpor (4=3) (ELSE=COPY) INTO famimpon.
これは、値 4 のすべての出現を値 3 に変更し、他のすべての値は新しい変数にコピーされます。 もちろん、好きなだけ明示的な再コーディングを行い、残りをELSE=COPYで処理することができます。
RECODEコマンドのELSE部分は、先ほど説明した「COPY」の場合に限定されるものではありません。
RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.
RECODE INTOの1つの問題は、変数と値のラベルが自動的に作成されないことです(どのように作成すべきでしょうか)。
複数の変数
次の例のように、すべての変数が同じ方法で影響を受けるのであれば、1 つの RECODE
文で対処できます
RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).
しかし、これらの変数を新しい変数に RECODE
RECODE
コマンド ラインが必要です。
欠損値の処理
欠損値は、キーワード「sysmis」または「missing」によって対処できます。
値 1 ~ 4 に加えて、欠損値として定義されている値 8 と 9 もあると仮定します。
RECODE famimpor (missing = 8).
すべての欠損値 (すなわち、値 8 と 9、およびおそらくシステムの欠損値) は、値 8 を持つことになります。 8 はまだ行方不明として定義されます。
RECODE famimpor (missing = 7).
すべての行方不明値 (すなわち、値 8 および 9、およびおそらくシステムの行方不明値) は、値 7 を持つことになります。 7 は欠落として定義されません!
システム欠落値があり、これらだけを別の値に再コード化したい場合、「missing」の代わりにキーワード「sysmis」を使用できます。
RECODE famimpor (sysmis = 7).
再び、値 8 および 9 を欠落として定義した場合、7 は (以前の) 欠落値として認識されません。 7 を今すぐ欠落として定義するか、または 7 の意味を示す値ラベルを割り当てることを望むかもしれません。
簡略化
しばしば、変数のいくつかの値に対処する必要があります。
RECODE famimpor (lowest thru 3 = 3).
RECODE famimpor (2 thru highest = 2).
最初のコマンドは、最小値から値 3 まで (および含む) すべての値を値 3 として再コード化します。 2 番目のコマンドは、値 2 から最高値まで (およびそれを含む) のすべての値を値 2 に再コード化します。 なお、”lowest “は “lo”、”high “は “hi “と省略することができる。 注意:8と9がまだユーザー欠損値として定義されていると仮定すると、これらは最後の例で2に再コード化されます(もちろん、もう欠損値として定義されることはありません)。