SAS編程工作中常見問題(一)

1、在數(shù)據(jù)步中,要選出排序后數(shù)據(jù)集中第一個(gè)或最后一個(gè)變量時(shí),set數(shù)據(jù)集時(shí)需要使用by語(yǔ)句同時(shí)在這之前對(duì)數(shù)據(jù)集要按這個(gè)變量進(jìn)行排序。
data ...;
  set ...;
  by xx;
  if last./first.xx;
  output;
run;
2、當(dāng)變量第一次出現(xiàn)時(shí),變量長(zhǎng)度就確定了。之后雖然重新定義變量,但是變量長(zhǎng)度不會(huì)改變,可能會(huì)出現(xiàn)變量截?cái)嗟那闆r。
例如:在原始數(shù)據(jù)集中變量var1的長(zhǎng)度是8,而在創(chuàng)建的新數(shù)據(jù)集中希望能重新定義。
data test1;
  set test;
  length var1 $12.;
run;
結(jié)果:在新的數(shù)據(jù)集中var1的長(zhǎng)度并未改變,長(zhǎng)度仍為8。length語(yǔ)句應(yīng)放在set語(yǔ)句之前,首先定義var1的長(zhǎng)度。
3、使用output時(shí),要注意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對(duì)變量進(jìn)行排序(只要有by語(yǔ)句就必須先排序)。
5、%put &&&x&num替換順序容易混
系統(tǒng)對(duì)多個(gè)&按如下的規(guī)則處理:
在每次掃描中凡連續(xù)使用兩個(gè)&符就改為一個(gè)&符,單個(gè)&與后面的字符串按宏變量名解讀。凡掃描后仍有&符就再進(jìn)行掃描,直至沒有&符為止。
253006-1.png



請(qǐng)前往:http://lygongshang.com/TeacherV2.html?id=166