附加到数据集后的SAS proc sort返回错误

附加到数据集后的SAS proc sort返回错误,sas,Sas,我将一个数据集附加到另一个数据集,然后对基本数据集进行排序 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 &

我将一个数据集附加到另一个数据集,然后对基本数据集进行排序

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;

我想知道造成这种问题的原因是什么

错误消息似乎很清楚:

错误:除非使用“强制”选项,否则索引数据集无法就地排序


您正在对数据集和原始数据进行排序。听起来像是为该数据集定义了索引。不能就地对数据集进行排序。您可以向PROC SORT添加
out=
选项,以编写输出数据集,而不是就地排序。或者您可以添加强制选项。我不知道这样做是会删除索引还是降低效率

我使用了强制选项。