Rでリコード?!
SPSS式シンタックスを用いて、Rで変数(ベクトル)をリコードするRスクリプトを生成します。
※β版です。 ※SPSSのリコードシンタックスの簡単生成はこちら
Rでリコード?!
SPSS式シンタックスを用いて、Rで変数(ベクトル)をリコードするRスクリプトを生成します。
※β版です。 ※SPSSのリコードシンタックスの簡単生成はこちら
使い方:
フォームにSPSS式のリコードシンタックスを入力して「Rスクリプト生成」を押すと、Rの変数(ベクトル)を「リコード」するRスクリプトを生成します。
「(sysmis = 999)(-1,0 = sysmis)(5 thru highest = 5)(else = copy)」など。
・NAは、sysmisで指定。(sysmis = 999):システム欠損値を999に, (999 = sysmis): 999をシステム欠損値に
・文字列を指定するときには「"」または「'」で囲んで指定します。
・特殊語: (else = copy):他の値はそのままコピー, (lowest thru X):最小値からXまで, (X thru highest):Xから最大値まで。
出力されたRスクリプトを選択して、Rのエディタにコピペして実行します。※このとき「テキストとして貼り付け」をすること
実行結果のイメージ
vorg(リコード前ベクトル):-1 0 1 2 3 4 5 6 7 8 9 NA
↓ ↓ (sysmis = 999)(-1,0 = sysmis)(5 thru highest = 5)(else = copy)でリコード
vout(リコード後ベクトル): NA NA 1 2 3 4 5 5 5 5 5 999
SPSSのリコードとの挙動の違い:なるべくSPSSのリコードの挙動に近づけているものの、以下の点で違う。
・SPSSは既存の変数をリコード先に指定できる。その場合、指令があったものだけリコードされ、あとは既存の変数の値のままとなっている。本スクリプトでは、そうした利用は想定しておらず、リコード先(vout)の初期値は全ての要素がシステム欠損値となっている。
※β版ですので、ご注意ください。当方は、本スクリプト使用によって生じたいかなる損害についても、一切の責任を負いません。
<付記: SPSSのリコードの挙動について>
当方で確かめた限りにおいて、SPSSの挙動は以下のようになっている。
(1)リコードは、シンタックスの左から順に行われる。
(2)一度リコードをされた値については(例: (2 = 999)であれば、2については)、この後、リコードの指令(コマンド)を受け付けない。したがって、この箇所は、999が入ったままになる。また、当然ながら(999=sysmis)というよう指令が来ても、999から変わらない。
(3)else は、それまで指令を受けていない数値について、リコードがなされる。sysmis(システム欠損値)についても変更される。elseのリコードをした時点で、全ての値がリコードを受けたことになるので、それ以降の指令は無視される(のと同じ)。→本スクリプトでは、それ以降のコードの生成を打ち切る仕様とした。また、(else = sysmis)(それ以外はシステム欠損値)というのも、全てNA (sysmis)の出力ベクトルに対してリコードを行う本スクリプトとしてはデフォルトの動きなので、コードの生成はしない仕様。
※(X thru Y=○○)は、直接的にはX以上、Y以下ということになるが、(1)(2)の挙動特性があるので、次の要領でX以上、Y未満というルールでリコードすることができる。
たとえば、(2 thru highest = 2)(1 thru 2 = 1)(0 thru 1 = 0)とすれば、 2以上→2, 1以上2未満→1, …というようになる。(先にリコードされた値は、後から変更されないから。)