DATA Step与PROC SQL的对比
DATA Step vs. PROC SQL: What’s a neophyte to do? -
原文地址:http://www2.sas.com/proceedings/forum2007/237-2007.pdf
转载请注明出处:http://blog.sina.com.cn/s/blog_5d3b177c0100c6tv.html
这篇文章比较简单,因此只是把一些SAS和SQL相似的功能列举出来,供以后查阅。
1 创建数据集
1.1 从非关系数据库的数据源创建新数据集
数据步data step:
DATA table1;
DATALINES;
me1 F 35786 10oct50
me3 M 57963 25jun49
fg6 M 25754 17jun47
fg7 F . 17aug53
PROC PRINT DATA=table1;
RUN;
SQL语句:PROC SQL
PROC SQL;
QUIT;
1.2 从关系数据库的数据源创建新数据集
数据步data step:
LIBNAME olib ORACLE
DATA table1;
...
SQL语句:PROC SQL
PROC SQL;
QUIT;
2 排序数据
SAS过程步排序:
PROC SORT DATA=table1
SQL语句:PROC SQL
PROC SQL;
QUIT;
3 连接数据
3.1 数据集基础连接
SAS数据步:
DATA table3;
SQL语句:PROC SQL
PROC SQL;
QUIT;
3.2 匹配合并
数据步DATA Step:
DATA table3;
SQL语句:PROC SQL
PROC SQL;
QUIT;
4 取子集
4.1 行数据子集
数据步DATA Step:
DATA table2;
DATA table4;
DATA table7;
SQL语句:PROC SQL
PROC SQL;
QUIT;
PROC SQL;
QUIT;
4.2 列数据子集
数据步DATA Step:
DATA table2;
DATA table4;
SQL语句:PROC SQL
PROC SQL;
QUIT;
PROC SQL;
QUIT;
5 转换数据
5.1 创建新变量
数据步DATA Step:
DATA table2;
SQL语句:PROC SQL
PROC SQL;
QUIT;
5.2 汇总数据
SAS过程步:
PROC SORT DATA=table1;
PROC MEANS DATA=table1;
SQL语句:PROC SQL
PROC SQL;
QUIT;
6 数据步与SQL功能对比
7 数据步与SQL优势对比
SQL语句:PROC SQL
PROC SQL包含了很多SAS数据步和过程步的功能
一般实现的语句不会太复杂或太长
对于小的数据表,SQL更有效
SQL是标准化的数据库操作语言,因此基础使用人群更多
并不需要显性地去排序数据集
SQL的join的时候,并不要求变量相同,但长度和类型要求相同
SQL可以直接打印数据集结果,但是可以用noprint禁止打印
可以对数据集用别名
SAS:
用处理更多的数据集
可以同时对文件读取与写入数据
数据处理更灵活
更方便地使用关系数据库的数据
更容易地输入非关系数据库的外部数据
8 技术的选择
熟练或熟悉程度:
准确性:
可维护性:
人力资源的有效性:
处理资源的有效性:
将来的应用: