見出し画像

[PSPP]インポート、エキスポート、マージ

データのインポート

PSPPは、データを直接入力する以外にも、すでにあるデータを読み込むことができる。SPSS形式(.sav)のほかにも様々な形式のファイルを読み込むことができるが、ここでは何かと取り回しに便利なCSV形式データのインポートを説明する。

・[ファイル]→[テキストデータの読み込み]を選択。

・ファイル選択ウインドウの右下の[すべてのファイル]をクリックし、「コンマ区切りデータ(CSV)ファイル」を選ぶ。

・一覧から読み込むファイルを選択して[進む]をクリック。
・[読み込み量]指定画面になるので、特に必要がなければ「すべてのケース」をチェックして、「進む」をクリック。

・多くの場合、一行目は変数名が入っているはずなので、データが入っている2行目を選択し、左下の[選択された行より上の行には変数名が含まれています.]にチェックをし、[進む]をクリック。

・[分割記号]指定画面になるので、[カンマ]を選択、引用符がある場合はそちらも選択し、[進む]をクリック。

・[変数]設定画面になるが、基本的には「変数ビュアー」と同じものなので、ここで設定してもいいし、読み込んだ後で設定してもいい。[適用]をクリックすると読み込み完了。


データのエキスポート

データセットに様々な変更を加えたとして、PSPPだけ、あるいはSPSSに持っていって分析するのであれば、[ファイル]→[名前を付けて保存]で「.sav」形式で保存し、あとは上書き保存をしていれば問題はありません。

LibreOfficeなど、他のアプリケーションに持っていこうとした場合は、CSVにエキスポートできると、非常に便利です。

しかし、PSPPはメニューからCSVへのエキスポートができません。ちょっと面倒ですが、次のような方法を取る必要があります。

なお、基本的には、アクティブなデータセットをエキスポートすることになるので、複数開いている場合は注意が必要です。

・「ファイル」→「新規作成」→「シンタックス」で、シンタックス・エディタを開く。すでに何かの作業をしていて、シンタックス・エディタが開いている場合はこの作業は不要です。

test.csvというファイル名で、Dドライブ直下に書き出す場合を説明します。

・以下のシンタックスを入力する。
 SAVE TRANSLATE
  /OUTFILE="D:\test.csv"
  /TYPE=CSV
  /REPLACE
  /FIELDNAMES
  /CELLS=VALUES.
・シンタックス・エディタのメニューから「実行」→「すべて」を選択。ただし、すでに他のシンタックスが書いてあるところに追加で書いた場合は、上のシンタックスを範囲指定し、「実行」→「選択」を選択。

これで、CSVにエクスポートされます。

以下、少しシンタックスの説明と注意点を述べておきます。

・「OUTFILE」の後の""で囲まれた部分がエキスポートで保存するファイル名なので、適当に書き換える。
・「TYPE」でCSVを指定している。「CSV」を「TAB」に換えれば、タブ区切りファイルになる。
・「REPLACE」は上書き指定。
・「FIELDNAMES」は列名(変数名)のエキスポート指定。これをなくすと、データの中身だけが保存される。
・「CELLS」は、ここでは「VALUES」で値をしている。ラベルを設定していて、そちらの方がよければ、「VALUES」を「LABELS」に換える。
・エキスポートされるCSVは、文字コードがUTF-8なので、そのままエクセルで読み込むと文字化けする。

最後の文字コードの件は結構致命的ですが、テキストエディタがあれば、すぐに解決します。あるいは、手間はかかりますが、Internet Explorerでも変換は可能です。手順は以下の通りです。

・拡張子を「txt」に換えて、Internet Explorerにファイルをドロップ。
・文字化けしているので、「表示」→「エンコード」から「Unicode(UTF-8)」を選ぶ。
・正しく内容が表示されたら、「ファイル」→「名前を付けて保存」を選択。
・保存ウインドウで「エンコード」を「日本語シフトJIS」に、拡張子は「txt」、ファイルの種類は「テキストファイル(.txt)」で、適当な場所に適当な名前で保存する。
・保存したファイルの拡張子をCSVに変更する。

あとは、このCSVを目的のアプリケーションで読み込むだけです。エクセルであれば、ファイルをダブルクリックするだけで、開くことができます。

ファイルのマージ

例えば、生徒の年齢や性別といった情報を整理したデータファイルと、試験の成績を記録したデータファイルがあったとして、それをひとつにするような場合、ファイルの結合(マージ)ということを行います。

SPSSには「ファイルのマージ」がメニューにありますが、PSPPには残念ながら、このコマンドはメニューにありません。

しかし、コマンド(シンタックス)としては、存在していますので、シンタックスエディタに入力することで、ファイルをマージすることが可能です。

たとえば、Eドライブのtoukeiというフォルダーに、file01.savとfile02.savという2つのファイルがあったとしましょう。
中身は以下のようになっています。

なお、マージをする場合、そのファイルを開いている必要はありません。

・[ファイル]→[新規作成]→[シンタックス]を選択。
・以下のシンタックスを入力。
 MATCH FILES
  /FILE="E:\toukei\file01.sav"
  /FILE="E:\toukei\file02.sav"
  /BY 番号.
  SAVE OUTFILE = "E:\toukei\merge.sav".

・[実行]→[すべて]を選択。

上のシンタックスの「BY」がマージのキーになる変数です。

このシンタックスが実行されると、マージされたデータが開き、同時に「merge.sav」というファイル名で保存がされます。

マージされたデータセットでは、16番の「性別」「学年」、14番の「国語」「数学」「英語」が欠損値になっています。これは、file01.savには16番が、file02.savには14番が存在しなかったためです。

つまり、マージに際してはすべてのケースが保存されているということです。

そのほか、詳細は省きますが、シンタックスに「/DROP=変数名」を追加することでマージしない変数を、「/FIRST=変数名」「/LAST=変数名」を追加することで、先頭と末尾の変数を指定することができます。


出力ビューアのエキスポート

PSPPでは、実行した作業のシンタックや分析の結果などは、出力ビューアに表示されます。

何らかの分析を行った際の表やグラフは全てこちらに表示されるので、必ず見る必要があります。またシンタックスが表示されているということは、実際にどのような命令が実行されているのかが分かるので、マニュアルと対照すると、「このシンタックスを打ちかえれば、繰り返し処理が楽になる」「GUIでは設定できなけど、シンタックスでは設定できる」ということが分かったりします。

さて、この出力ビューアには、SPSSと違う大きな欠点があります。それは出力後の編集ができないこととコピーができないことです。

SPSSでは出力を後から編集してグラフを見やすくするということも可能でしたし、コピーしてエクセルに丸ごと貼り付けるということができました。しかし、PSPPではそれができません。

特につらいのは、出力のコピーができない点です。表を手でエクセルに入力しなおすなどということはしたくありません。

そこで、出力を保存するときに少し工夫をします。

オープンドキュメントでの保存も可能なので、LibreOfficeを使用している場合はそれでもかまいませんが、エクセルでは書式がうまく反映されない場合も少なくないので、一般的に使える方法を紹介します。

・[ファイル]→[書き出し]を選択。
・[拡張子からのファイルタイの判別]になっていることを確認(左下にあります)。
・任意の場所に任意のファイル名をつけ、拡張子をhtmlにして保存。
・保存したファイルをブラウザにドロップ(またはブラウザから開く)。

こうすることで、ブラウザ上で結果を表示できますし、

・全範囲を指定してコピー。
・アプリに貼り付け。

という工程を経ることで、htmlでの書式をほぼ保った状態で、任意のアプリケーションに貼り付けることができます。

この記事が気に入ったらサポートをしてみませんか?