SPSS Win  勝手にFAQ  ファイル編



トラブル

[Q24]データファイル加工したあと,そのデータファイルを「ファイル-上書き保存」しようとすると『シンタックス エラー: データセット名が見つかりません。このコマンドの実行を停止します。』という警告が出る。 表示例

[A] ver24で発生するようになったトラブルのよう。毎回発生するとは限らない。「上書き保存」がグレーアウトになっていることもある。get fileシンタックスでデータを読み込んでから加工すると発生するようだ。
「名前をつけて保存」で同名で保存すれば問題なさそう。

[Q]テキストファイルを読み込もうとすると『このファイルのUnicodeエンコードはテキストウィザードではサポートされていません。』『固定幅のUnicodeファイルはサポートされません』などと表示されて読み込めなくなる
表示例





[A]SPSSがテキストファイルウィザードの固定長ファイル読み込みではUnicode形式のテキストファイルに対応していないために発生する。
以下の2つを実施する
  1. テキストファイルをメモ帳などのエディタでShift-JIS(ANSI)形式で保存する。
    メモ帳では「ファイル-名前を付けて保存」画面の一番下「文字コード」を[ANSI]にする。
    秀丸エディタでは「ファイル-名前を付けて保存」画面の「エンコードの種類」を[日本語(Shift-JIS)]にする。
  2. SPSS側でUnicodeで読ませないようにする
    「ファイルの種類(T)」欄:テキスト(*.txt,*.dat,*.csv,*.tab)
    「エンコード(E)」欄:「ローカルエンコード」にする



[Q AMOS19][ファイルマネジャー]でテキスト出力ファイルを選択すると「間違った形式です」というエラーになる
[症状]
ファイル-ファイルマネジャーから「テキスト出力」と表示されるAmosOutputファイルを指定すると「xxは間違った形式です」となってしまう.パス図と一緒に表示した場合は正常に表示されるファイルであっても表示できない.

[A]ファイルから直接開くことを何度か繰り返していると,なぜか症状が消えることがある.
なお,関連づけはAppViewer.CLIというプログラム(通常はインストール時に自動的に関連づけされている)

[Q15] データの内容を書き換える処理をしていないのに,統計処理後に「変数ビュー」内の「測定」(または「尺度」)欄の「スケール」が勝手に「名義」に変わってしまい,ファイルが更新されたことになってしまう
[A] 本来,24種類以上の値を持つ数値型変数は「スケール」,それ未満の数値型は「名義」になるのがデフォルトの設定のはず(ヘルプ内のデータエディタ-変数ビュー-変数測定レベルの説明を参照)。
よって,5件法などの調査データを読み込んだ場合,項目得点などはデフォルトでは「名義」になるはず。
しかしテキストデータからDATA LISTシンタックスで読み込んだデータをそのままsave outfileシンタックスで保存すると,24未満の変数も「スケール」に設定されてしまう。
さらにこのデータで何か計算を行うと24未満の変数が自動的に「名義」に書き換えられ「データの書き換えが生じた」とみなされてしまう(ファイル名の前に*印がつく)。

[現象を発生させるシンタックス]
DATA LIST
FILE='test.txt' FIXED RECORDS=1 TABLE /v1 to v5 1-5
save outfile="testsv.sav".
EXECUTE.

データ
12345
22345
32345
42345

[現象の詳細]
  1. 上記シンタックスを実行直後,データエディタ画面上の「測定」欄は「名義」になっている。ファイル名はsave outfileで指定した(testsv.sav)が表示されているが*印はない。
  2. しかしそのまま閉じようとすると「データエディタの内容をtestsv.savに保存しますか?」と問い返される。
  3. 「はい」と答えて保存すると,再度開いた時testsv.savの変数は「名義」となっており,以後現象は発生しなくなる。
  4. 「いいえ」と答えて保存しなかった場合,再度開いた段階でtestsv.savの変数の「測定」はすべて「スケール」に設定されている。
  5. その状態で何らかの分析処理を行うと,データエディタ上のファイルの「測定」欄が「名義」に書き換えられ,ファイル名の前に*印がつく
  6. ファイルを保存すると以後は現象は発生しなくなる。
  7. 手動で「スケール」に変更した上で保存しても,現象は発生しない(「名義」にも書き換わらない)
おそらくsave outfileコマンドでファイルに保存された「測定」の設定と,その際にデータエディタ上に展開されている設定が一致していないのではないかと推測される

[回避法]
上記3.のように読み込んだ直後のデータエディタを保存してしまうか,7.のように手動で「スケール」に書き換えて保存する

[以下の場合は発生しない]
[例:次のようにシンタックス内にデータを直接記述した場合は現象は発生しない]
DATA LIST/v1 to v5(5f1.0).
begin data
11111
22222
33333
44444
end data.
save outfile="testsv.sav".

なお計算上は「測定(尺度)」欄が名義でも「型」欄が数値型になっていれば数値として正しく処理されるがMissing Valuesでの多重代入法など一部の機能でデータの範囲が指定できないなど問題が生じることがある
なお測定(尺度)欄の内容をユーザの都合に合わせてデフォルト設定することはできない
参考:多くの変数の測定レベルを一度に変更する方法はこちら
「測定:スケール 順序 名義」の変数設定


[Q] より新しいバージョンで出力した結果出力ファイルが,古いバージョンのSPSSで読めない
[A] 仕様。読めることもあるが,原則的には下位バージョンでの互換性は保たれていない。とくに16からは拡張子も変更され,まったく別の出力方式になっている

[Q 14以前] SPSS15で作成したデータファイル(sav形式)がSPSS14までの古いバージョンのSPSSで読めない
[A] 7.5以降14まではほぼ下位バージョンでも開けましたが,15では内部の仕様変更があったのかもしれません。開ける場合もありますが,ダメなこともあります。save outfileシンタックスで作成したものでも同様です。しかしSPSS15に附属のCommand Syntax Reference p1583には
「VERSIONサブコマンドを指定しない場合,数値を指定しない場合はデフォルトの3が適用される,この場合,作成されたファイルは7.5よりも前のバージョンでは読むことができない(原文は英文)」と記されています。記述に従えば/VERSION=3が適用された場合,7.5〜14までのSPSSでは読めるはずです。このあたりはCommand Syntax Referenceの記述の誤りかもしれません。
 複数のバージョンの利用者間でデータをやりとりする時は,テキスト(CSV)やExcelなどの形式にした方が安全。

[AMOS7] SPSS14までのバージョンで作成したデータファイル(sav形式)がAMOS7で読めない
[A] 古いバージョンのSPSSには対応していないようです。一時ファイルに保存できない旨を示すエラーが出たり,「オブジェクト参照がオブジェクトインスタンスに設定されていません」などというエラーが出て止まってしまうことがあります。他の形式(Excelなど)にファイルを変換すれば読めます。
確認されたエラーの例(SPSS11.5で作成したsavファイルを読ませようとした結果)
(hogeの部分は環境やモデルなどによって異なる)
グループhogeのデータをファイルC:\Documents and Settings\...Local Settings\Temp\Amos Temp\processHoge\yyyda.tmpへ書き込み中,エラーが発生しました。

グループhogeに含まれる欠損値を確認中にエラーが発生しました。
テンポラリデータファイルを書き込み中にエラーが発生しました。

グループhogeに対する飽和モデルを適合中にエラーが発生しました。
カイ2乗統計量を計算することができません。
テンポラリデータファイルを書き込み中にエラーが発生しました。

グループhogeに対する独立モデルを適合中にエラーが発生しました。
’ベースラインモデル’に必要とされる測度を計算することができません。
テンポラリデータファイルを書き込み中にエラーが発生しました。


[Q 7.5 TO 9.0] Excel形式で保存してあるデータファイルがSPSSで読み込めない
[A] SPSS9.0まではExcel Ver4のワークシート形式までしか対応していない。よってExcel上で[ファイル]-[名前を付けて保存]で[ファイルの種類]欄を[Microsfot Excel4.0ワークシート(*.xls)]にしなければならない。(ちなみに[Microsfot Excel4.0ブック(*.xlw)]ではだめ)。
その上でSPSSで[ファイル]-[開く]で[ファイルの種類]欄を[Excel(*.xls)]に指定して開く。
(たぶん,5.0以降は*.xlsのファイルでブック形式となったため,複数のワークシートが1つのファイルに含まれてしまい対応できないのではないか?)

[Q 7.5/8.0] Excel4形式のファイルをSPSSで読み込むと,英数文字ANKの変数名しか使われていなくても,次のような警告がでる

Warning # 6465
ワークシートにサポートされない文字グループがあります。
特殊文字はおそらく正確に変換されません。

[A] SPSSが過剰反応した結果であり,無視して構わない(?!)そうです ちなみに,8.0Jからは日本語変数名がサポートされています。

[Q 8.0] 出力ナビゲータ(*.SPO)でテキスト部分を編集後,印刷プレビューしてから,この出力を保存しようとしたら,「ドキュメントの保存に失敗しました」と表示され保存できなくなってしう。
[A] Windows95のバージョンを4.50.950から「サービスパック1」で4.50.950aにアップグレードしたところ解決しました(NEC PC9821Xa13の場合)。
(7.5では発生しないトラブルだったのですが,何が変わったのか謎です)
※これは本当に分からなくて苦労しました。サポートでも全く再現出来ないとのことで,両方で頭抱えてました(^^;
[Q]一変数のテキストデータの読み込みをしたところ以下のエラーになってしまいその後再度読み込もうとしても「データ入力ファイルを読み込めません」となってしまう。さらにSPSSを終了すると再度起動できなくなる。
>Error # 4096. Command name: EXECUTE
>常設辞書が定義されていません。上記の変数変換でアクセスされる変数が定義
>されていません。
>This command not executed.

[A]一変数データで,ファイル先頭に変数名を含むデータで次の操作をすると発生する
テキストインポートウィザードのステップ2/6で「元データの形式」を「自由書式」,ファイルの先頭に変数名を含んでいますか?に「はい」,ステップ4/6で「変数間に私用する区切り記号」に何も指定しないとこのエラーになる
正しくは,ステップ2/6で「固定書式」を選び,(ファイル先頭に..は「はい」のまま) ステップ4/6で変数の分割点を指定せず(左端に↑印が一つだけある状態)で次へ進む。

※「自由書式」「固定書式」ともにステップ6/6(最終ステップ)での「次へ」ボタンを押しても何も起こらない(ダミーボタン?)。最終ステップを終えるには「完了」ボタンを押す。

ヒント

[Q]AMOSが入っていないパソコンで結果を見るには?
[A]「テキスト出力」の内容は拡張子.AmosOutputのファイルに記録される。このファイルはhtml形式で記述されたテキストファイルなので,拡張子をhtmlなどに変更すれば一般的なブラウザで見ることができる。

[Q]削除ないし残したいケース番号の一覧からケースを抽出する方法
下記のように10人のデータがあり変数[no]にケース番号が入っているとする。


別のファイル(番号テーブル)に[no]のうち削除ないしは選択したいケース番号がある。

このとき2つめのファイルに従って 1つめのファイルから[No=2,4,5,6,8]のケースを削除・または抽出するにはどうするか。

[A]以下の手順で行う
  1. 番号テーブルのファイルにフラグ変数(ここでは変数del)をたて,すべて一定の値を入れてSPSS形式で保存する(例 datalist.savなど)。
    シンタックス
    compute del=1.
    execute.
    結果


  2. データファイルを開き
    [データ]-[ファイルの結合]-[変数の追加]


    [外部SPSSファイル]に,上で作成したフラグ変数を含む番号テーブルファイル(deletelist.sav)を指定する

    キー変数によるケースの結合にチェック


     キー変数=no
    「ケースは2つのデータセットのキー変数の順序でソートされます」チェックなし
    「アクティブでないデータセットが検索テーブル」選択 


  3. [OK]をすると 元データファイル上に変数delが作成され,deletelist.savのnoと一致するケースのみdel=1,他のケースはdel=システム欠損値が入る


  4. 番号テーブルと合致するケースを削除するには,以下のシンタックスで[del=システム欠損値]のケースだけを残せばよい。

    select if sysmis(del).
    execute.
    (注意:select if del~=1 としないように。欠損値ケースも含めて削除されてしまう。)

    [結果] [No=2,4,5,6,8]を除いたケースが残る。

    最後に変数delを削除すれば完成

  5. 反対に,番号テーブルと合致する[No=2,4,5,6,8]のケースを抽出するには,以下のシンタックスで[del=システム欠損値ではない]のケースだけを残せばよい。
    select if not sysmis(del).
    execute.
※この方法は,変数の「追加」機能を用いてケースの削除・選択を実現しているため,
複数のテーブルファイルを使って何度も削除・選択することはできない。
予め,一つのテーブルファイルに削除・選択する番号リストをまとめておく必要がある。


[Q]データを読み込むと「IBM SPSSはUnicodeエンコードモードで実行中です」と表示される


[A]Shift-JISコードが含まれるデータを読み込もうとすると発生する。下記により回避できる。
1)いったん「キャンセル」として,データが読み込まれていない状態にする
2)編集(E)-オプション(N)-「言語」タブを開き,「データとシンタックスのエンコード」欄において,「ロケールの書き込みシステム(I)」を選択し,ロケール(C)を「Japanese」にする。
(データが読み込まれていない空の状態でないとグレーアウトして設定できない)


[Q 16?以降] 相関係数などをエキスポートした際に表中に有意を示すアスタリスク(**など)を出力させたくない

[A]「オプション変更」で「脚注と解説を含める」のチェックを外す(「脚注およびキャプション」が「いいえ」になる)

[Q] 出力をテキスト形式でエキスポートしたときセパレータ(罫線テキスト)をなくしたい
[A] エキスポート画面のオプションで,列の分割に「タブ」を選択する,または「セパレータ」(行および列の「罫線文字」)にスペースを入れる(何も入れないと自動的に|や-が挿入されてしまう)


[Q] 出力結果をテキストファイルに保存したい
[A] ファイル(F)-エキスポート(T)を用いる。SPSS15までは,デフォルトでは「ファイルの種類」がHTMLファイルで出力されてしまうので,通常のプレーンテキストの場合,必ずテキストファイルに指定を変更する必要がある。
またオプションで区切り文字をデフォルト(-|の罫線)のままにしておくと,うるさい
SPSS16以降ではテキスト以外にもpdfやエクセル等様々な形式のファイルに出力できるようなった。

[Q] 横に並んだ変数を縦に並べ替えたい(ファイル結合メニューで行う方法)

コマンドシンタックスで実現する場合は
こちら

[A]例)同一ケース内のR1 to R10, I1 to I10を別のケースのV1 to V10と見なすよう並び替える
(ケース数が2倍になる)
>
R1R2........R10I1I2........I10
1011...19 5051...59
2021...29 6061...69
::...: ::...:
4041...49 9091...99
V1V2........V10
1011...19
2021...29
::...:
4041...49
5051...59
6061...69
::...:
9091...99

  1. まず元のデータファイルを2回別名で保存し,同じファイルを2つつくる
    (例:元ファイルがx.savだった場合,これを[ファイル−名前を付けて保存]で,[a.sav]および[b.sav]という名前で再度保存する)
  2. a.savについてR1〜R10だけを残して残りの変数を削除し上書き保存する
  3. b.savについてI1〜I10だけを残して残りの変数を削除し上書き保存する 変数の削除方法:「変数ビュー」画面で,削除したい変数の左端(縦に1,2,3と並んでいるところ)を選択してDeleteキーを押す
  4. a.savおよびb.savの変数をV1〜V10に変更し上書き保存する。
    方法:「変数ビュー」画面で,当該の変数の「名前」欄を書き直す
  5. a.savを表示し,「データ」「ファイルの結合」「ケースの追加」と進み,b.savを選択する。 (すでにb.savが開いた状態なら「開いているデータセット」の中からb.savを選ぶ。綴じてあったら「外部SPSS Statisticsデータファイル」の中からファイルを指定して選ぶ)
  6. 右のボックスからV1〜V10を一つずつ選択し左側のボックスに移すと,左側に同じ変数名同士が2つ表示されるので,矢印の下の「ペア」ボタンを押すと,右側のボックスにその変数名が再度表示される
  7. 結合させたいすべての変数(V1〜V10)についてこれを繰り返す
  8. [OK]を押すと,a.savの後ろにb.savの内容が結合される

[Q] キー変数に欠損値がある場合のファイル結合(変数追加)の際の注意
[A] [データ]-[ファイルの結合]-[変数の追加] では「キー変数によるケースの結合」が出来る。キー変数として指定した変数値が一致したケースについて,変数を結合してくれる。しかし,キー変数に複数ケースの欠損値が含まれていると次のようなエラーになり正しく結合されない。
>ファイルの中にキーが重複して使われています。表示されたファイル上において、BY
>変数はそれぞれのケースを個別なものとしては認識できません。結果を
>注意深く調べてください。

複数の欠損値が「同一値」と見なされてしまい,ケースを識別できないために発生する
システム欠損値の替わりにケースによって異なるダミー値(9991,9992,9993...など)を入れておくことで回避できる。
(同じ値を入れても,識別できないので,必ずそれぞれ違う値を入れる)


[Q] SPSSファイルを固定長テキストファイルに変換保存したい
[A] ファイル-名前を付けて保存画面で,[ファイルの種類]をASCII固定長ファイルにする
ただし,システム欠損値は空白として保存されてしまうので,前もってSPSS内でに別の値を与えておく方がよい。また変数間は区切れなく保存されてしまう。変数間に区切りを入れたいときはコマンドシンタックスでFORTRAN形式のフォーマットなどを使う

[Q] 固定長テキストファイルを読み込むのによい方法は?
[A] コマンドシンタックスで,Fortran様式のフォーマットで一気に読み込むのがコツ!

SPSS9からはファイル-テキストデータの読み込み でテキストインポートウィザードが使えるので,比較的容易に読み込める
[例]
1行目:番号,年齢,50変数(a1〜a50)
2行目:30変数(b1〜b30) の場合

SET
BLANKS=SYSMIS
UNDEFINED=WARN.
DATA LIST
FILE='d:\mydata.dat' FIXED RECORDS=2 TABLE /
no,age,a1 to a50,b1 to b30
(F4.0,1X,F2.0,1X,50F2.0/30F2.0) .
EXECUTE.
******↑ここまでで読み込みは完了する*******
******↓ラベルまで設定してしまうと後が楽***
VARIABLE LABELS
no '番号'/ age '年齢'/.
EXECUTE.
******↓さらに欠損値が異なるコードの場合の処理もしてしまう方がよい***
******ここでは欠損値が-1となっていたのをすべてシステム欠損値に変換***
RECODE
no,age,a1 to a50,b1 to b30
(-1=SYSMIS) .
EXECUTE .


[Q] HALBAU形式のテキストファイルを読み込むのによい方法は?
[A] Excel形式にいったん保存するのが一番やりやすい。
直接読み込む場合,「テキストインポートウィザード」2/6画面で「自由書式」「ファイルの先頭に変数名を含んでいますか?」を「いいえ」,3/6画面で「最初のケースの取り込み開始番号」を[3]にする。ただし変数名は後で手動で指定しなければならない。(ファイルの先頭に変数名を含む形にすると,先頭のケース数や変数名を指定している行が,変数名として誤認されてしまう)
戻る| トップへ