SAS学习笔记(四)

来源:互联网 发布:淘宝特步 编辑:程序博客网 时间:2024/05/17 09:02

        这次课的主要内容是按格式format输出或读入,及SAS与数据库的链接。主要通过例子说明过程的用法,这样会比较容易理解。

1、sort排序过程

Libname mylib "C:\saslx";
DATA mylib.SCORE;/*data步先插入一部分数据*/
INPUT NUM $ S1-S3 @@;
CLAS=SUBSTR(num, 3,2); /* 用SUBSTR函数从NUM中截取出班级CLAS */
TOT=SUM(OF S1-S3);
CARDS;
060101 79 96 87 060102 69 78 92
060203 98 87 93 060104 88 93 90
060201 76 89 88 060207 90 89 97
proc print;
run;

PROC SORT DATA=mylib.SCORE OUT=CS1;/*对Mylib逻辑库的score数据集进行排序,排序后的数据集为cs1,如果没有设置out参数,则排序后的数据会覆盖原数据集。*/
BY CLAS descending TOT;/*by参数设置根据哪些变量进行排序,这里设置根据CLAS进行降序排序,根据TOT升序排序,多个排序变量之间用空格分开。*/
PROC PRINT;
RUN;

2、分组

DATA ear_exp;
INPUT name $ reg $ wor $ earn exp @@;
CARDS;
LILING A 1 5500 4700 LIUHONG B 2 4600 4000
SUNPING B 2 5300 4800 ZHANGLI A 1 5300 4500
ZHAOGONG A 1 5600 4600 XIWANG B 1 8500 7400
WEIDONG A 1 5500 4500 ZHAOJUN A 2 4500 4000
WANGJIAN B 1 9800 8300 LIUYAN A 2 3500 3300
HUANGHUA A 2 3800 3500 ZHOULI A 2 3900 3700
QINWEI B 2 4900 4400 DONGYI B 1 15000 9000
ZHANGSAN B 1 10500 8800 WANGZI B 2 4900 4500
liujun A 1 8900 7790 DONGFENG B 1 11000 8090
FENGJUN A 1 8980 7720 KONGHAI A 1 12000 9000
PROC SORT ;
BY reg wor;
PROC PRINT ;
ID NAME;/*ID的作用是用ID后的变量取代以前的Obs变量
BY reg wor;/*进行分组,根据reg和wor变量分组,分组前一定要先进行sort过程进行排序*/
SUM earn exp;
RUN;

3、format过程

LIBNAME ep 'E:\saslx';
LIBNAME library 'E:\sasex';
DATA ep.score;
LENGTH name $ 12;
INPUT name t1-t3 @@;
CARDS;
WANGDONG 90 70 60 XUEPING 85 95 88 ZHOUHUA 77 84 69
HEYAN 95 78 88 SUNHONG 89 97 87 ZHAOBIN 66 98 86
;
PROC FORMAT library=library;/*将新的数据格式保存至逻辑库,这一步很重要*/
VALUE fsmt low-<60='C' 60-<80='B' 80-100='A';/*自定义format格式
PROC PRINT DATA=ep.score;
FORMAT t1-t3 fsmt.;/*降自定义的format运用于t1-t3变量*/
run;

4、SAS链接数据库

这里有一个博客写得比较好,所以我就直接把链接贴这了。

http://www.dataguru.cn/thread-170009-1-1.html

5、链接数据库之后,要对数据库的表进行操作,SAS有一个特殊的过程叫proc sql,需要注意的是sql过程不是以run结尾而是以quit结尾。

在这个过程里面可以执行很多SQL语句,具体用法如下几个例子所示:

proc sql;

select * from mysql.score;

quit;

mysql为链接数据库的逻辑库,score表示所连接数据库的表名,这个select语句表示选取score表的全部数据,其他sql语句包括创建表、插入、删除、修改等操作都可以进行,但语法可能会跟sql语句不太一样,sas有自己的特点,这个具体使用时再查下。sas里面可使用的sql语句如下: