2017-05-25 6 views
0

データセットを別のデータセットに追加してから、ベースデータセットをソートしていました。データセットに追加した後にSAS proc sortを実行するとエラーが返される

proc append base=&RAWDATA data=GAPDATA; 
     run; 
proc sort data=&RAWDATA; by Symbol Date Time; run; 

しかしSASは、エラーメッセージが表示されて戻って保持します:ERROR:FORCEオプションが使用されない限り、インデックス付きデータセットが場所でソートすることができません。

私が使用した完全なコード:

%MACRO GAP_SEC(RAWDATA); 
    data GAPDATA; 
    SET &RAWDATA; 
    retain SYMBOL DATE TIME BB BO MIDPRICE; 
    LAG_SYMBOL = lag(SYMBOL); 
    LAG_DATE = lag(DATE); 
    LAG_TIME = lag(TIME); 
    LAG_BB = lag(BB); 
    LAG_BO = lag(BO); 
    LAG_MIDPRICE = lag(MIDPRICE); 
    TIME_DIFF = intck('second', LAG_TIME, TIME); 
    if TIME_DIFF > 1 and SYMBOL = LAG_SYMBOL and DATE = LAG_DATE then 
     DO; 
      n=TIME_DIFF; 
      TIME = LAG_TIME; 
      DO WHILE(N>1); 
       SYMBOL = LAG_SYMBOL; 
       TIME = intnx('second',TIME,1); 
       DATE = LAG_DATE; 
       BB = LAG_BB; 
       BO = LAG_BO; 
       MIDPRICE = LAG_MIDPRICE; 
       output; 
       N=N-1; 
      END; 
     END; 
    drop LAG_SYMBOL LAG_DATE LAG_TIME LAG_BB LAG_BO LAG_MIDPRICE TIME_DIFF N; 
    run; 
    /* Add new obs to original data set */ 
    proc append base=&RAWDATA data=GAPDATA; 
    run; 
    proc sort data=&RAWDATA; by Symbol Date Time; run; 
    proc export data=&RAWDATA (obs=99999) 
    outfile= 'FILLEDDATA.csv' 
    dbms=CSV REPLACE; 
    putname=YES; 
    run; 
%mend; 

に私は、このような問題の原因は何か不思議でしたか?

答えて

0

エラーメッセージが明確なようだ:

ERROR:FORCEオプションを使用しない限りインデックスデータセットが場所でソートすることができません。

あなたはデータセット&の生データをソートしています。そのデータセットに対してインデックスが定義されているようです。データセットを適切にソートすることはできません。 PROC SORTにout=オプションを追加して、並べ替えずに出力データセットを書き込むことができます。または、FORCEオプションを追加することもできます。それがインデックスを削除するのか、それとも効率を落とすのか分かりません。

+0

私は強制オプションを使用しました。 –