Вероятно из этого:
DATA WORK.TMP0TempTableAddtnlPredictData;
SET WORK.APPEND_TABLE(IN=__ORIG) WORK.BASE_PREDICT_2;
__FLAG=__ORIG;
__DEP=TOP_CREDIT_HABITAT_2017;
if not __FLAG then TOP_CREDIT_HABITAT_2017=.;
RUN;
Вы добавляете набор данных, у которого здесь нет повторяющегося номера.Я не совсем уверен, что следую тому, что представляет собой этот набор данных - вы собираетесь добавить его к каждой копии, возможно?Тогда вы можете сделать что-то вроде этого (не проверено):
DATA WORK.TMP0TempTableAddtnlPredictData;
do _n_ = 1 by 1 until (eof);
SET WORK.APPEND_TABLE(IN=__ORIG) end=eof;
output;
end;
do replicate = 1 to 5;
do n_predict = 1 to nobs_predict;
set WORK.BASE_PREDICT_2 nobs=nobs_predict point=n_predict;
__FLAG=__ORIG;
__DEP=TOP_CREDIT_HABITAT_2017;
if not __FLAG then TOP_CREDIT_HABITAT_2017=.;
output;
end;
end;
stop;
RUN;
Это сложный способ получить 5 копий этого, по одной для каждой копии.Но я не уверен, что это именно то, что вы хотите - есть ли в нем все переменные, которые вам нужны?Вы уверены, что не имели в виду MERGE вместо SET?
Отдельно я не понимаю, почему вы используете шаг SQL для добавления двух примеров.Я бы либо сделал это на том же шаге данных здесь, либо использовал бы PROC APPEND
, оба были бы быстрее, чем объединение SQL, а затем сразу добавили бы больше в набор данных.