この構文でうまくいくはずです。このタスクのためだけに、SPSSとRの間を行き来する必要はありません。
*making fake data, 4 million records and 150 variables.
input program.
loop i = 1 to 4000000.
end case.
end loop.
end file.
end input program.
dataset name Temp.
execute.
vector X(150).
do repeat X = X1 to X150.
compute X = RV.NORMAL(0,1).
end repeat.
*This is the command you are interested in, puts the stats table into a new dataset.
Dataset declare IQR.
OMS
/SELECT TABLES
/IF SUBTYPES = 'Statistics'
/DESTINATION FORMAT = SAV outfile = 'IQR' VIEWER=NO.
freq var = X1
/format = notable
/ntiles = 4.
OMSEND.
これは、このような大規模なデータセットではまだ時間がかかりますが、それは予想されることです。SPSSヘルプファイルで「OMS」を検索するだけで、OMSがどのように機能するかを示す構文例を見つけることができます。
多くのグループのIQRを計算するというさらなる制約を考えると、先に進むために私が見ることができるいくつかの異なる方法があります。1つは、split fileコマンドを使用して、上記の頻度コマンドを再度実行することです。
split file by group.
freq var = X1 X2
/format = notable
/ntiles = 4.
split file end.
また、ctables内で特定のパーセンタイルを取得することもできます(そのために必要なグループ化/ネストを実行できます)。ただし、この時点でより有用な解決策となる可能性があるのは、実際に個別のファイルを保存する(または、ロードされたままの特定のグループに完全なデータセットを減らす)プログラムを作成し、個別のファイルごとに計算を実行して、データセットにダンプすることです。400万レコードのデータセットを操作するのは面倒であり、ファイルを分割するだけの場合は必要ないようです。これは、マクロコマンドを介して実行できます。