100,000 行 * 100,000 列の sas データセットを Excel ファイルに出力する必要があります。proc export または ODS html ステートメントが壊れているため、同じものを印刷できません。
ファイルステートメント内のデータは、同じものを印刷できます。しかし、論理レコード長の制限により、印刷が適切ではなく、基本的に 1 行が 3 行に分割されています。抜け道はありますか、それともデータ処理に関する SAS の制限ですか?
100,000 行 * 100,000 列の sas データセットを Excel ファイルに出力する必要があります。proc export または ODS html ステートメントが壊れているため、同じものを印刷できません。
ファイルステートメント内のデータは、同じものを印刷できます。しかし、論理レコード長の制限により、印刷が適切ではなく、基本的に 1 行が 3 行に分割されています。抜け道はありますか、それともデータ処理に関する SAS の制限ですか?
SAS の制限ではなく、バージョンに応じて最大 16384 列と最大 100 万行を処理できる Excel の制限です。Excel は、この規模のデータセットを処理するためのものではありません。適切なデータベースを使用してください。
これをどのシステムでもExcelに入れることはできません。
これをテキストファイルなどの別の形式に変換できるはずです。例えば:
data mydata;
array vars[100000];
do _n_=1 to 10;
do _t = 1 to dim(vars);
vars[_t]=_t;
end;
output;
end;
drop _t;
run;
data _null_;
file "c:\temp\myfile.csv" dlm=',' lrecl=2000000;
set mydata;
put _all_;
run;
* put allはこれに対して実際には適切に機能しませんが、変数名や設定がわからないため、より良い解決策を提供することはできません。おそらく、put ステートメントを定義するショートカットを使用できます。;
最大 LRECL 値はオペレーティング システムによって異なりますが、ほとんどの場合、100 万または 2 を処理できると思います。確かにWin7はできます。PROC EXPORT を csv に使用することもできますが、ログから (300k 行の) コードを取得し、デフォルトで 32767 に設定されているため、LRECL をより大きく変更する必要があります。変更できないと思います。プロセスで。
SAS/IML では、別のオプションも使用できます。合理的なシステムで実際に 100k*100k を実行できるかどうかはわかりません (数値の 8 バイト行列要素の場合、保存に 800 億バイトが必要です...)
proc iml;
x=j(1e5,1e5,12345);
filename out ’c:\temp\myfile.csv’;
file out lrecl=800000;
do i=1 to nrow(x);
do j=1 to ncol(x);
put (x[i,j]) 5.0 +5 ',' @;
end;
put;
end;
closefile out;
quit;
編集: IML の lrecl ステートメントが適切に動作していないようです。または、ここで何か間違ったことをしている可能性がありますが、それは私のシステムの障害である可能性があります。lrecl が明らかに十分に長い場合でも、バッファ オーバーフローが発生します。