日々の記録簿

日々のできごとの記録

PISA

RによるPISAの分析(データの準備その2)

投稿日:

RによるPISAの分析(データの準備)で公開したpythonコードですが、その後、PISA2000のspsファイルに対応していなかったとか、すべての国のデータをまとめて変換したほうが便利だとか、ファイル名を入力するのが面倒だとか、いろいろ思うところがあり、少し修正しました。

新しいスクリプトは、spss_all.pyです。例によってLinuxしか動作検証していませんが、PISA2000から2012までの学校・生徒データに対応しており、spsファイルを利用して、txtファイルをcsvファイルに変換することができます。

使い方は、端末を開いて、以下のようにします。

python spss_all.py INT_STU12_SPSS.sps INT_STU12_DEC03.txt

すべての国のデータを変換するので、少し時間がかかります。

コードは、下記のようになります。必要な方はコピペしてどうぞ。

#!/usr/bin/env/python3
# coding: utf-8

"""
spss_all.py

spsファイルを使って、PISAデータのtxtファイルをcsvファイルにコンバートします。

spss.pyからの変更点
1.すべての国のデータを一括変換します。
2.ファイル名は、txtファイルのファイル名を利用します。
例えば、INT_STU12_DEC03.txtを変換すると、INT_STU12_DEC03.csvが生成されます。
3.PISA2000のspsファイルに対応しました。

使い方
"python spss_all.py INT_STU12_SPSS.sps INT_STU12_DEC03.txt"

"""
import csv
import sys
import os.path
import re

argvs = sys.argv
argc = len(argvs)

if argc != 3:
    print('引数は、"spsファイル"、"txtファイル"が、この順番で必要です。')
    quit()

if os.path.splitext(argvs[1])[1] != '.sps':
    print('最初の引数は、spsファイルでなくてはなりません。')
    quit()

if os.path.splitext(argvs[2])[1] != '.txt':
    print('2番目の引数は、txtファイルでなくてはなりません。')
    quit()

# SPSファイルから固定幅データを得る
x = []
y = []
var = []
for text in open(argvs[1]):
    spss = text.strip(' /.\n')
    line = spss.replace('-', ' - ')
    if len(line.split()) >= 4:
        if line.split()[1].isdigit() and line.split()[3].isdigit():
            x.append(line.split()[1])
            y.append(line.split()[3])
            var.append(line.split()[0])

# 書込ファイルの準備
name = os.path.splitext(argvs[2])[0]
filename = name + '.csv'
w = open(filename, 'w')
write = csv.writer(w)

# 変数名を書込
write.writerow(var)

# データを固定幅で切ってcsvで書込
for line in open(argvs[2]):
    list = []
    for i in range(len(x)):
        list.append(line[int(x[i])-1:int(y[i])])
    write.writerow(list)

# 後始末
w.close()

スポンサーリンク

スポンサーリンク

-PISA

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

RによるPISA Data Analysis Manualの再現(第9章: Proficiency Levels/習熟度の計算)

第7章(標準誤差の推定)、第8章(PVs)に引き続き、PISA Data Analysis Manual SPSS 2nd Editionの分析を、Rで再現してみます。 今回は、習熟度(Profici …

SPSSとSASでsample weightsの扱いが違う

PISA Data Analysis Manual を読んでいたら興味深い記述がありました。 However, even with an equi-probabilistic sample, stat …

RによるPISAの分析(データの準備)

PISAをRで分析する際に、最初の壁になるのが、データファイルが大きすぎるという点でしょう。 すでに述べたように、PISAのデータは、(1)データが固定長のtxtファイルになっている、(2)参加国すべ …

RによるPISA Data Analysis Manualの再現(第10章: 学校の変数を扱う)

第7章(標準誤差の推定)、第8章(PVs)、第9章(習熟度)に引き続き、PISA Data Analysis Manual SPSS 2nd Editionの分析を、Rで再現してみます。 今回は、学校 …

RによるPISA Data Analysis Manualの再現(第8章: PVsを使う)

前回に引き続き、PISA Data Analysis Manual SPSS 2nd Editionの分析を、Rで再現してみます。 今回は、PVs(Plausible Values: 推算値法)に関わ …