随笔分类 -  SAS

SAS program
摘要:data过程的一个误区是以为数据集是一起导入的。实际上数据是一个观测一个观测导入的。这期间会产生一个或多个数据指针,也可能产生一个或多个PDV。但data过程在涉及set/merge等语句时本身相当于一个循环过程。因此不谨慎的代码很容易造成冗余的读取操作,甚至可能死循环。set语句格式set<sas-data-set(s)<(data-set-option(s))>><options>;其中sas-data-set(s)是1个到50个的数据集,注意不同于数据集选项,options不需要括号。数据集选项有keep=变量(组)指定读入哪些变量到PDVdrop=变 阅读全文
posted @ 2012-11-07 03:31 hilbertan 阅读(768) 评论(1) 推荐(1)
摘要:SAS中只有两种数据类型,字符和数据,没有布尔型。因此要用到时用0和1表示。示例程序:打印1000以内的素数: 1 data _null_; 2 file print; 3 put "Prime Nums in 1 to 1000:"; 4 put "2 " @; 5 do i= 3 to 1000 by 2; 6 IsPrime = 1; 7 do j=3 to sqrt(i); 8 if mod(i,j)=0 then do 9 IsPrime = 0;10 leave;11 end;12 ... 阅读全文
posted @ 2012-10-22 00:59 hilbertan 阅读(386) 评论(0) 推荐(0)
摘要:SAS可以作为一般高级语言使用输出时可以先设置工具->选项->参数选择,在结果选项卡中勾选生成HTML然后在需要输出的地方加入“file print;”语句,这样使用put的时候就会生成报表。例如:data _null_; a=23; b=34; c=a+b; file print; put "a+b=" c;run; 在作为一般高级语言使用时,如果不需要输出数据,可以在data _null_;run;中编写程序。在不涉及宏的情况下,单引号'和双引号"几乎没有区别,绝大多数情况可以混用(但要匹配)。SAS的复合语句(类似于C/C++中的语句块) 阅读全文
posted @ 2012-10-19 00:51 hilbertan 阅读(1277) 评论(0) 推荐(0)
摘要:逻辑库操作:建立:libname MyLib 'd:\sas\Mylib';解除:libname MyLib clear;数据集删除操作:proc delete data=data1 Mylib.data2;run;proc delete data=_all_ Mylib._all_;run; /*recommend!*/proc sql;drop table Mylib.data;run;proc datasets lib = Mylib kill;run;proc datasets lib = Mylib;save;run;proc datasets lib = Mylib 阅读全文
posted @ 2012-10-18 18:22 hilbertan 阅读(266) 评论(0) 推荐(0)