2017-05-25 63 views
0

我正在將數據集附加到另一個數據集,然後對基本數據集進行排序。附加到數據集後的SAS proc排序返回錯誤

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

但SAS會一直返回錯誤消息:錯誤:除非使用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

錯誤信息似乎很清楚:

錯誤:索引數據集可以不到位,除非FORCE選項用來進行排序。

您正在排序數據集& rawdata。這聽起來像是爲該數據集定義的索引。您無法對數據集進行排序。您可以在PROC SORT中添加out=選項來編寫輸出數據集,而不是按原樣排序。或者你可以添加FORCE選項。我不知道這是否會刪除索引或使其效率更低。

+0

我使用了強制選項。 –