sas之proc sql (一)

本人本文不讨论data step 与 proc sql谁优谁劣。只要你学会用,用得好,就是大哥,同时谁优谁劣心中有数。

本系列主要介绍sas 的proc sql过程。按照对象分为三部分:表,表的操作 即row column,其他。

个人学习的思路借鉴sas data步的学习经验,对表的管理以及操作。

第一部分:table表。

表是由行和列组成的,sas的行是代表观测,列代表变量。以下为创建表的几种方法。

第一:没有raw data 只给出表的结构,即表包含的列明。

如要创建的表a包含三个列分别为 id,date,country。

proc sql;
create table a 
(id num,
 date num format = date9. label = "brithday",
 country char(10) format = $25.
);

当然,除了列的属性以外,还可以规定主键,外键,添加约束等操作,以后有空写一下。

第二:从已存在的表中建立新表。

如将a表的结构copy给表b:

proc sql;
create table b 
like a;
quit;

如建立表c只从表a中选择id以及date这两列。

proc sql;
create table c 
as select id, date
from a;
quit;

我们可以使用describe在log里边查看表的结构。

proc sql;
describe table a;
quit;

log如下:


218  proc sql;
219  describe table a;
NOTE: SQL table WORK.A was created like:

create table WORK.A( bufsize=65536 )
  (
   id num,
   date num format=DATE9. label='brithday',
   country char(10) format=$25.
  );

220  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.07 seconds
      cpu time            0.01 seconds

这个也能帮助你查看你新导入的数据集的变量以及属性(通常很少用,因为在explorer里边,你选中dataset鼠标右击就可以查看列的属性),但是这过程可以让你熟悉创建表的sas代码。

同时,对于不太理解sas的我 或许还有你们,添加validate可以让sas执行sql server的思路先编译查找你所写的code是否在语法,变量等上有问题,这是在不提交程序的前提下(validate后只能跟select)。

proc sql;
validate
select * 
from sashelp.class;
quit;

log:显示 proc sql statement has valid syntax;即为有效语句,毛问题啦。
250  proc sql;
251  validate
252  select *
253  from sashelp.class;
NOTE: PROC SQL statement has valid syntax.
254  quit;
NOTE: PROCEDURE SQL used (Total process time):
      real time           0.00 seconds
      cpu time            0.01 seconds


 

猜你喜欢

转载自blog.csdn.net/J_sir2015/article/details/86624998