SPSS Win
勝手にFAQ
コマンドシンタックス編
[Q] Q統計量の求め方
[A] 次のようなシンタックスを用いる
(1) p%水準でのQの値
COMPUTE Q=IDF.SRANGE(1-p,水準数,df) .
[例] 5%水準,水準数3,自由度60のQ値
COMPUTE Q = IDF.SRANGE(.95,3,5) .
EXECUTE .
データエディタ上の変数Q列に4.602が返される
(2)Q値に対する有意水準
1-CDF.SRANGE(Q, 水準数, df)
[例] Q=4.50 水準数2 df=3の有意水準
COMPUTE P=1-CDF.SRANGE(4.50, 2, 3).
EXECUTE .
データエディタ上の変数P列に.05が返される
※データエディタ上に何らかのデータ(ダミーでよい)が存在する状態でないと実行できない。
[Q] COMPUTE s=a1+a2+a3.と s=SUM(a1 to a3).は何が違う?
[A] COMPUTE s=a1+a2+a3.ではa1,a2,a3のうち一つでも欠損値があればsは欠損値となる
COMPUTE s=SUM(a1 TO a3).では欠損値があっても,有効な数値について加算され s の値となる(すべて欠損値の場合のみ s は欠損値となる)
また足し算ではTOによる省略法は使えない
× COMPUTE s=a1 to a3.
[Q] 欠損値データを除いて計算したい
[A] 「データ−グループごとの分析」をすると,グループ化変数について「欠損値」のグループについても「計算」されてしまい,うっとおしいことがあります。
SELECT IF NOT SYSMIS(グループ化変数).
のようなシンタックスを書くことで,欠損値データを除外することができます。
(例)
「学年」が欠損値のデータをデータシートから除外する
SELECT IF NOT SYSMIS(学年).
SORT CASES BY 学年 .
SPLIT FILE
SEPARATE BY 学年 .
※データシートから欠損値データそのものが消去されますので,計算後にうっかり「保存」をしてしまわぬよう注意が必要です。
[Q] ある変数をシステム欠損値にするには?
[A] COMPUTE V=$SYSMIS
[応用例1] aが0だった場合bを欠損値に置き換える
if (a=0) b=$sysmis.
[応用例2] 複数の変数について一度に処理する場合の例
(a1...a10が0の場合b1...b10を欠損値に置き換える)
do repeat aa=a1 to a10/bb=b1 to b10.
if aa=0 bb=$sysmis.
end repeat.
[Q]ある変数について欠損値を持つケースを除外するには
[A] 例)v1,v2,v3のいずれかに欠損値をもつケースを除外する
FILTER OFF.
USE ALL.
SELECT IF(NMISS(v1,v2,v3) = 0).
EXECUTE .
※データシートから欠損値データそのものが消去されますので,計算後にうっかり「保存」をしてしまわぬよう注意が必要です。
[Q](ケース番号のような)逐次増加する値を持つ変数を作成したい
[A] ケースの順に1,2,3...と増加するvという変数を作成する
COMPUTE v = $casenum .
データシートの変数末尾(右端)に新規変数が生成される
メニューでは[変換]-[計算]-[変数の計算]を開き
「目標変数」欄に新規変数名(v) 「数式」欄に$CASENUMを入れて[OK]
[Q]変数をある値で埋めたい
[A]例)vの値を全ケース1にする
RECODE
v (ELSE=1).
メニューでは[データ]-[値の再割り当て]-[同一変数へ]を開き
「今までの値と新しい値」画面で
「今までの値」欄=その他全ての値,「新しい値」欄=埋めたい値(例では1)
[追加][続行][OK]
[Q]ある変数値の順位を求め新たな変数にしたい
[A]例)性別(sex)ごとの変数vについての順位を求めたい
RANK VARIABLES=v (A) BY sex /RANK /PRINT=YES /TIES=MEAN .
vという変数にsexごとの順位が格納される
※(A)は昇順,(D)は降順による順位
TIES=は同順位の計算方法(MEAN:平均,LOW:最低値,HIGH:最大値,CONDENSE:同じ値に対する同順位)
PRINT=NOとすると計算後に「出力」画面が開かない
グループ(性別)ごとではなく,全体の順位を求めたい時は,BY sexの部分を省く
メニューでは[変換]-[ケースのランク付け]
特定グループごと(性別ごとなど)の順位を行う場合は「グループ」変数に指定する
[Q]横に並んだ別々の変数を,別ケースの同一変数にしたい
[A]例)同一ケース内のR1 to R10, I1 to I10を別のケースのV1 to V10と見なすよう並び替える
(ケース数が2倍になる)
| NO | R1 | R2 | ........ | R10 | I1 | I2 | ........ | I10 |
| 1 | 10 | 11 | ... | 19 |
50 | 51 | ... | 59 |
| 2 | 20 | 21 | ... | 29 |
60 | 61 | ... | 69 |
| : | : | : | ... | : |
: | : | ... | : |
| 4 | 40 | 41 | ... | 49 |
90 | 91 | ... | 99 |
↓
| NO | V1 | V2 | ........ | V10 |
| 1 | 10 | 11 | ... | 19 |
| 2 | 20 | 21 | ... | 29 |
| : | : | : | ... | : |
| 4 | 40 | 41 | ... | 49 |
| 1 | 50 | 51 | ... | 59 |
| 2 | 60 | 61 | ... | 69 |
| : | : | : | ... | : |
| 4 | 90 | 91 | ... | 99 |
* R1〜R10をV1〜V10に変更しI1〜I10は保存先からは削除して1.savに保存.
get file="元データ.sav".
save outfile="1.sav"
/rename (R1 to R10=V1 to V10)
/drop=I1 to I10
/keep=NO,V1 to V10.
(↑あとで同一ケースごとにデータをまとめたい場合,NOをkeepに入れておく必要がある)
* 同じくI1〜I10をV1〜V10に変更しI1〜I10は保存先からは削除し2.savに保存.
get file="元データ.sav"
save outfile="2.sav"
/rename (I1 to I10=V1 to V10)
/drop=R1 to R10
/keep=NO,V1 to V10.
* 1.savと2.savを結合する.
ADD FILES /FILE="1.sav"
/FILE='2.sav'.
EXECUTE.
さらにケースごとにデータをまとめたいときは
SORT CASES BY NO (A) .
EXECUTE.
* ただし1行目の"(A)"はNO(ケース番号)の昇順に並べ替える指定.降順に並べたいときは"(D)"とする
とすればよい(↓のような並びになる)
| NO | V1 | V2 | ........ | V10 |
| 1 | 10 | 11 | ... | 19 |
| 1 | 50 | 51 | ... | 59 |
| 2 | 20 | 21 | ... | 29 |
| 2 | 60 | 61 | ... | 69 |
| : | : | : | ... | : |
| 4 | 40 | 41 | ... | 49 |
| 4 | 90 | 91 | ... | 99 |
[Q]変数名を変えたい
[A]RENAME VARIABLES (旧変数名=新変数名). コマンドを用いる
例1
RENAME VARIABLES (A=B).
Aという変数がBという名前に変更される
例2
RENAME VARIABLES (A1 TO A10=B1 TO B10).
A1〜A10がB1〜B10にまとめて変更される
[Q]一定値の変数を挿入したい
[A]
- すべて"1"の変数Aを作成する場合
compute A=1.
- すべて欠損値からなる変数Aを作成する場合
compute A=$SYSMIS.
戻る|
トップへ