SASデータステップでデータをソートする必要があります。正確に私が意味することは:procソートの作業はデータステップで行う必要があります。解決策はありますか?SASのデータステップを使用してデータをソートする方法
答えて
データステップのみのソリューションをお探しの場合は、PROC SORT
の作業をhash tableとすることができます。注意は、あなたがそれを行うのに十分な記憶が必要なことです。
単純なソートを行う場合は、ordered:'yes'
オプションを使用してハッシュテーブルをロードし、新しいテーブルに出力します。デフォルトでは、ordered:yes
はデータを昇順でソートします。 descending
も指定できます。
単純ソート
data _null_;
/* Sets up PDV without loading the table */
if(0) then set sashelp.class;
/* Load sashelp.class into memory ordered by Height. Do not remove duplicates. */
dcl hash sortit(dataset:'sashelp.class', ordered:'yes', multidata:'yes');
sortit.defineKey('Height'); * Order by height;
sortit.defineData(all:'yes'); * Keep all variables in the output dataset;
sortit.defineDone();
/* Output to a dataset called class_sorted */
sortit.Output(dataset:'class_sorted');
run;
デデュープ
multidata
オプションを削除する以外、まったく同じ操作を行い、重複を削除するには。下の表では、観測値(8,9)と(15,16)は互いに重複しています。観察9と16は削除されます。
data _null_;
/* Sets up PDV without loading the table */
if(0) then set sashelp.class;
/* Load sashelp.class into memory ordered by Height. Do not keep duplicates. */
dcl hash sortit(dataset:'sashelp.class', ordered:'yes');
sortit.defineKey('Height'); * Order by height;
sortit.defineData(all:'yes'); * Keep all variables in the output dataset;
sortit.defineDone();
/* Output to a dataset called class_sorted */
sortit.Output(dataset:'class_sorted');
run;
解決策proc ds2があります。
/*Just prepare dataset, because DS2 responds with an error on libraries like sashelp. */
data sql_prep;
set sashelp.class;
run;
/*Delete test dataset before ds2 func, to avoid errors*/
proc datasets nodetails nolist;
delete test;
run;
proc ds2;
data test;
method run();
set {select * from sql_prep order by Weight};
end;
enddata;
run;
quit;
さらにinfoについては、sashelpライブラリのds2エラーについてです。
Appendix ds2 docsには、ds2のSQLについてです。
これが有効な場合、私は 'dosubl'も公正ゲームだと思います... – user667489
ステュは例えば、それに私を打つが、あなたのデータセットが一意のキーが含まれている、とあなたはメモリ内全体を収めることができ、あなたはハッシュのソートを使用することができます提供:
data _null_;
if 0 then set sashelp.class;
declare hash h(dataset:"sashelp.class",ordered:"a");
rc = h.definekey("age","sex","name");
rc = h.definedata(ALL:'yes');
rc = h.definedone();
rc = h.output(dataset:"class_sorted");
stop;
run;
をした場合組み込みのソート方法の使用を避けることは本当に決まっていますが、特に愚かなアプローチは、データセット全体を一連のテンポラリ配列にロードし、手作業でアルゴリズムを使用してソートし、再度エクスポートすることです。
https://codereview.stackexchange.com/questions/79952/quicksort-in-sas-for-sorting-datasets
- 1. SAS:データステップでマクロ変数を数値として使用する
- 2. SASでのデータステップの調整方法
- 3. SASときSASデータステップでdatastep
- 4. MongoDB Compassを使用してデータをソートする方法
- 5. SASを使ってデータステップに座標を入力する際のヒント?
- 6. SASを使用してExcelシート内のセルにデータを印刷する方法
- 7. SAS - ループを使用して複数のデータセットをソート
- 8. SASを使用してテキストファイルの行数をカウントする方法
- 9. SASマクロ関数とデータステップ関数
- 10. SASデータステップの変数をループで定義する
- 11. SASデータステップを使用してファイルをエクスポートするときに列名が見つからない
- 12. VBAを使用してデータのソートを高速化する方法
- 13. テンプレートを使用してsasからExcelにエクスポートする方法
- 14. 新しいデータセットを作成せずにSASデータをソートする?
- 15. sasを使用して観測数を含める方法
- 16. Pythonを使用してこのCSVファイルをソートする方法(
- 17. バッチファイルを使用してテキストファイルの行をソートする方法は?
- 18. データステップ内でマクロ変数を複数回呼び出すSAS
- 19. マクロ変数データステップとして変数を使用します。
- 20. SASデータステップが正しく動作しない場合
- 21. ネストしたNSArrayを使用してNSArrayをソートする方法
- 22. Springデータで自然なソートを使用する方法Jpa
- 23. SAS 9.4:sasファイルの特定のデータにアクセスする方法
- 24. SASデータステップのDOループにおける動的制御フロー
- 25. SASマクロを使用して選択したファイルのリストをロードする方法
- 26. データを使用してデータが欠落しているSAS/Long to Wide
- 27. SASデータステップが予想通りに増加しない
- 28. プロパティを使用してRLMArrayをソートする方法は?
- 29. Javaを使用してXMLファイルをソートする方法
- 30. Cプログラミングでqsortを使用してStructをソートする方法
あなたはなぜこのようなことをしたいのか知りたいです。 –
ちょっと考えました。複雑な方法でこれを行う必要はありません。しかし、私が知りたい熱意と不安から、それはデータステップで可能ですか?私はGoogleで検索しましたが、私はここに投稿したので、何の答えも見つかりませんでした。 – Saran