вопрос об инициализированном значении по умолчанию для переменной SAS - PullRequest
1 голос
/ 27 января 2011

У меня два вопроса по следующему коду SAS:

%let crsnum=3;
data revenue;
set sasuser.all end=final;
where course_number=&crsnum;
total+1;
if paid=’Y’ then paidup+1;
if final then do;
   call symput(’numpaid’,paidup);
   call symput(’numstu’,total);
   call symput(’crsname’,course_title);
end;
run;
proc print data=revenue noobs;
   var student_name student_company paid;
   title "Fee Status for &crsname (#&crsnum)";
   footnote "Note: &numpaid Paid out of &numstu Students";
run;

Первый вопрос, в строке 5 он имеет

if paid=’Y’ then paidup+1;

Здесь «переменная» должна быть переменной. Мне кажется, что SAS установил начальное значение по умолчанию «paidup» как 0. Это правда?

Второй вопрос, в сегменте кода

title "Fee Status for &crsname (#&crsnum)";

Как работает # & crsnum? Или какова функциональность # здесь?

1 Ответ

1 голос
/ 27 января 2011

Первый вопрос : да, именно это и сделал SAS - он инициализировал переменную с 0 и «сохраняет» значение переменной в циклах набора данных.(Если в исходных данных уже не существует переменной paidup, в вашем случае sasuser.all)

Второй вопрос : в опубликованном вами коде нет ничего особенного в #: он будет отображаться как литерал перед разрешенным значением &crsnum в заголовке.Поэтому, если & crsname равно Blah , а & crsnum равно 3 , заголовок будет выглядеть следующим образом:

Статус комиссии для Blah (# 3)

Однако # может влиять на заголовки, когда группа by находится в игре, если она включена в заголовок особым образом - см. Документацию здесь под заголовком «Вставка информации группы BY».в заголовок ".

...