Выход SAS неверен - PullRequest
       10

Выход SAS неверен

0 голосов
/ 06 февраля 2019

Меня беспокоит фрагмент кода, который я выполняю в Odamid.Код:

data b;
if id lt 3 then output b;
input id name $ class $;
datalines;
1 Sudha A
2 Gaurav B
3 Saurabh C
4 Preeti D
;
run;

Этот код дает мне пустой числовой набор данных с 5 наблюдениями.

Меня беспокоит, почему он дает мне 5 наблюдений.почему не не 4?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

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

Все переменные пусты, потому что вы выполнили оператор output до того, как выполнили оператор input.

Обычно SAS добавляет неявный оператор output в конце вашего шага данных.Но когда у шага уже есть явный оператор output, он не добавляет его.

0 голосов
/ 06 февраля 2019

Выводится 5 наблюдений, потому что

  • явное условное output предшествует input
  • условное всегда истинно

В знании

  • В верхней части пошагового цикла DATA все не сохраненные переменные сбрасываются до пропущенных
  • if id < 3 оценка равна . < 3, что соответствует действительности, и output происходит
  • input неявно проверяет конец условия данных, если true, шаг завершается
  • input анализирует строку данных и присваивает значения переменных
  • нижняя часть достигнутого шага

При проверке

data b;
put 'NOTE: ' _n_= 'before if';
if id lt 3 then output b;
put 'NOTE: ' _n_= 'before input';
input id name $ class $;
put 'NOTE: ' _n_= 'before datalines';
datalines;
1 Sudha A
2 Gaurav B
3 Saurabh C
4 Preeti D
;
run;
---------------- LOG -----------------
NOTE: _N_=1 before if
NOTE: _N_=1 before input
NOTE: _N_=1 before datalines
NOTE: _N_=2 before if
NOTE: _N_=2 before input
NOTE: _N_=2 before datalines
NOTE: _N_=3 before if
NOTE: _N_=3 before input
NOTE: _N_=3 before datalines
NOTE: _N_=4 before if
NOTE: _N_=4 before input
NOTE: _N_=4 before datalines
NOTE: _N_=5 before if
NOTE: _N_=5 before input
NOTE: The data set WORK.B has 5 observations and 3 variables.

Рекомендуемое прочтение:

  • "Взгляд программиста SAS® на руководителя SAS" Ян Уитлок,Westat Inc., SUGI 22 Conference Proceedings, 1997.

    Аннотация

    Этот учебник отвечает на такие вопросы, как:

    • КакШаговый программист DATA, что мне нужно знать о супервизоре SAS и почему?
    • Как супервизор SAS обрабатывает код шага DATA?
    • Как работает SAS MERGE?
    • А как насчет механизмов, индексации и представлений?
    • Что происходит, когда мой код шага DATA содержит макропеременные?
    • Что если мой шаг DATA вызывает макрос или содержится в макросе?
...