2017-02-18 5 views
0

Мне нужно повторить следующую сортировку proc от int1 до int10. Что такое эффективный способ кодирования этого?Как упростить приведенные ниже инструкции с помощью цикла в SAS?

Proc sort data=sourceh.average_metric_Jan2009_int1; 
by time rank; 
run; 

Proc sort data=sourceh.average_metric_Jan2009_int2; 
by time rank; 
run; 
+0

использовать макропеременные в цикле. % do% i = 1% to% 10; Данные для сортировки Proc = sourceh.average_metric_Jan2009_int &i.; по рангу времени; run; конец; – abhiieor

ответ

2

Вы можете использовать %do цикл внутри программы макросов:

%macro multisort(); 

%do i = 1 %to 10; 
    proc sort data = sourceh.average_metric_jan2009_int&i; 
    by time rank; 
    run; 
%end; 

%mend; 


%multisort() 
1

В зависимости от того, что вы делаете после того, как вы отсортированы всех наборов данных, это может быть проще объединить их все вместе , а затем отсортировать их.

 
data int1_to_10 ; 
    set sourceh.average_metric_Jan2009_int1-sourceh.average_metric_Jan2009_int10 ; 
run ; 
proc sort data=int1_to_10 ; 
    by time rank ; 
run ;