что означает «если сначала.col3»? Руководство по Sas enterprise guide

#sas #enterprise-guide

#sas #enterprise-guide

Вопрос:

что означает «если сначала.col3»? (Руководство по Sas enterprise)

 Data table2;
set table1;
by col1 col2;
if first.col3;
run;
 

после «if first.col3» нет инструкции

Ответ №1:

first.<variable-name> это специальная переменная, для которой устанавливается значение 1 , когда имя переменной указано в BY инструкции, А значение из первой строки новой группы, состоящей из переменной by и подчиненных ей переменных by.

Для варианта использования first.<variable-name> и имя переменной НЕ указано в BY инструкции, вы получите строку журнала с указанием

 NOTE: first.<variable-name> is uninitialized.
 

Неинициализированным переменным присваивается пропущенное значение в начале шага обработки ДАННЫХ.

if <expression> Оператор БЕЗ a then называется подмножеством if, и управление программой продолжается после него только тогда, когда выражение истинно.

Если в вашем случае if first.col3 есть выражение, которое никогда не является истинным, поскольку col3 не указано в BY инструкции, поэтому управление никогда не передавалось за пределы подмножества if .

Шаг ДАННЫХ без явно закодированного OUTPUT оператора по умолчанию выводит строку, когда элемент управления достигает конца шага.

В вашем случае элемент управления никогда не достигает конца шага, поэтому вывод никогда не выполняется, и результирующий набор данных table2 будет иметь нулевые строки.