SAS編程工作中常見問題(一)
1、在數(shù)據(jù)步中,要選出排序后數(shù)據(jù)集中第一個或最后一個變量時,set數(shù)據(jù)集時需要使用by語句同時在這之前對數(shù)據(jù)集要按這個變量進(jìn)行排序。
data ...;
set ...;
by xx;
if last./first.xx;
output;
run;
2、當(dāng)變量第一次出現(xiàn)時,變量長度就確定了。之后雖然重新定義變量,但是變量長度不會改變,可能會出現(xiàn)變量截斷的情況。
例如:在原始數(shù)據(jù)集中變量var1的長度是8,而在創(chuàng)建的新數(shù)據(jù)集中希望能重新定義。
data test1;
set test;
length var1 $12.;
run;
結(jié)果:在新的數(shù)據(jù)集中var1的長度并未改變,長度仍為8。length語句應(yīng)放在set語句之前,首先定義var1的長度。
3、使用output時,要注意output的使用位置不同,輸出結(jié)果不同。
data temp;
length group $15. age $15.;
do group = 'A', 'B', 'C' ,'D' ,'E';
do set=1 to 3;
output;
end;
end;
run;
4、使用proc transpose之前,不要忘記使用proc sort對變量進(jìn)行排序(只要有by語句就必須先排序)。
5、%put &&&x&num替換順序容易混
系統(tǒng)對多個&按如下的規(guī)則處理:
在每次掃描中凡連續(xù)使用兩個&符就改為一個&符,單個&與后面的字符串按宏變量名解讀。凡掃描后仍有&符就再進(jìn)行掃描,直至沒有&符為止。
請前往:http://lygongshang.com/TeacherV2.html?id=166