SAS编程工作中常见问题(一)

1、在数据步中,要选出排序后数据集中第一个或最后一个变量时,set数据集时需要使用by语句同时在这之前对数据集要按这个变量进行排序。
data ...;
  set ...;
  by xx;
  if last./first.xx;
  output;
run;
2、当变量第一次出现时,变量长度就确定了。之后虽然重新定义变量,但是变量长度不会改变,可能会出现变量截断的情况。
例如:在原始数据集中变量var1的长度是8,而在创建的新数据集中希望能重新定义。
data test1;
  set test;
  length var1 $12.;
run;
结果:在新的数据集中var1的长度并未改变,长度仍为8。length语句应放在set语句之前,首先定义var1的长度。
3、使用output时,要注意output的使用位置不同,输出结果不同。
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对变量进行排序(只要有by语句就必须先排序)。
5、%put &&&x&num替换顺序容易混
系统对多个&按如下的规则处理:
在每次扫描中凡连续使用两个&符就改为一个&符,单个&与后面的字符串按宏变量名解读。凡扫描后仍有&符就再进行扫描,直至没有&符为止。
253006-1.png



请前往:http://www.mark-to-win.com/TeacherV2.html?id=166