1

同じように構造化された24個のデータセットがあります。つまり、同じ列ヘッダー(時刻、日付、価格、銘柄記号)、データセット構造などを意味します。1つのデータセットを処理するには大きすぎるため、24個のファイルすべてを追加したくありません。すべてのデータセットに「file1file2file3file4 ....uptofile24」という名前を付けました。

私がやりたいことは次のとおりです。

  1. たとえば、24個のファイルすべての日付形式を一度に変更します。

  2. 各ファイルから「Dell」のような特定の銘柄記号を抽出し、抽出したすべての「Dell」データを追加できます。

  3. 最後に、銘柄記号を「Dell」から「Goog」などのリスト内の別の銘柄記号に変更できるループを作成するにはどうすればよいですか。そのループで(2)すべての銘柄記号に対して実行したいと思います。

4

2 に答える 2

3
  1. データセットの日付形式を変更するには、すべての観測値をループするのは悪い考えかもしれません。標準構文は-

    procデータセットライブラリ=your_libnamenolist; データセット名を変更します。format variable_name format_name; 終了する;

modifyステートメントは複数のSASファイルを使用しないため、24個のファイルすべてに対してマクロでラップする必要があります。

%macro modformats();
proc datasets library = <your libname> nolist;
  %do i = 1 %to 24;
  modify file&i;
    format <variable name> <format name>;
  %end;
quit;
%mend modformats;
  1. すべての「Dell」関連データを抽出して追加するには、ビューを使用するのが最適です。

たとえば、最初にビューを定義します(ここで作成された「all_files」という物理データセットはないことに注意してください)-

data all_files / view = all_files;
  set file1 file2... file24;
run;

そして、あなたは書くことができます-

data dell;
  set all_files;
  where ticker = 'DELL';
run;
于 2012-06-09T14:49:34.913 に答える
2

これはソリューションのプロトタイプです。多くのシンボル変更を行う必要があるかどうかはわかりません。リクエストに応じてコードを変更します。テストはしていませんが、動作するはずです。

%macro test();
%do i=1 %to 24;
  data file&i;
   set file&i;
    format date [dateformat];  /*replace with the format you want */ 

proc append base=unions data=file&i(where=(stock_symbol='Dell'));

data unions;
 set unions;
  stock_symbol='Goog';

%end;
%mend;

%test(); run;
于 2012-06-09T12:10:09.170 に答える