Некоторые примеры того, почему это не считается хорошей практикой. Предположим, вы работаете в интерактивном режиме и у вас есть следующий набор данных кода с именем tmp
:
data tmp;
set sashelp.class;
run;
Если бы вы дважды запускали приведенный ниже код, в первый раз он работал бы нормально, но при втором запуске вы получите предупреждение, так как возраст переменной больше не существует в этом наборе данных:
data tmp;
set tmp;
drop age;
run;
В данном случае это довольно безобидный пример, и вам повезло, что SAS просто выдает предупреждение. Однако в зависимости от того, что делал шаг данных, это могло так же легко быть чем-то, что генерировало ошибку, например:
data tmp;
set tmp (rename=(age=blah));
run;
Или, что еще хуже, он может не генерировать ОШИБКУ или ПРЕДУПРЕЖДЕНИЕ и изменить ожидаемые результаты, как в приведенном ниже коде:
data tmp;
set tmp;
weight = log(weight);
run;
Мы намерены применить простое преобразование журнала к переменной веса при подготовке к моделированию, но если мы случайно запустим этот шаг во второй раз, мы вычислим журнал (log (вес)). Никаких предупреждений или ошибок не будет, и, глядя на набор данных, не сразу станет очевидно, что что-то не так.
ИМО, вам намного лучше создавать итеративные наборы данных, т.е. tmp1, tmp2, tmp3 и так далее ... для каждого процесса, который каким-либо образом обновляет набор данных. Место намного дешевле, чем тратить время на отладку.
person
Robert Penridge
schedule
17.08.2015