2011-01-26 56 views
1

初始化值:上的默認一個問題要問我有以下SAS代碼的兩個問題,一個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; 

「paidup 「應該是一個變數。 在我看來,SAS將「paidup」的默認初始值設置爲0.這是真的嗎?

第二個問題,在

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

代碼段如何#& crsnum工作?或者#這裏有什麼功能?

回答

1

第一個問題:是的,這就是SAS所做的 - 它已將變量初始化爲0,並在數據集循環中「保留」變量的值。 (除非該變量paidup已經存在於源數據,你的情況sasuser.all)

第二個問題:在您發佈的代碼,並沒有什麼特別之處#:它會出現一個文字標題中的解析值&crsnum之前。所以,如果& crsname是布拉赫和& crsnum是,標題將讀取

費地位布拉赫(#3)

的#可以,但是,影響職稱時, by組在標題中以特定方式包含在內時,請參閱文檔here,標題爲「將BY組信息插入標題」。