版权声明:本文为王小雷原创文章,未经博主允许不得转载 https://blog.csdn.net/dream_an/article/details/50416819
SAS学习笔记之《SAS编程与数据挖掘商业案例》(2)数据获取与数据集操作
1. SET/SET效率高,建立的主表和建表索引的查询表一般不排序,
2. BY语句,DATA步中,BY语句规定分组变量,用于控制SET,MERGE,UPDATE或MODIFY语句。
代码语言:javascript复制BY<DESCENDING>variable-1
<...<DESCENDING>variable-n><NOTSORTED><GROUPFORMAT>;
其中:
Variable为分类、排序或索引的变量;
GROUPFORMAT为用格式化值分组;
NOTSORTED为未排序。
3. MERGE 多表的横向合并,关系为一对一,一对多,多对一。而多对多需用SQL。
代码语言:javascript复制 应用:1)根据某些需求条件更新特定变量2)对主数据的某些变量做历史累加
UPDATE语句后面只能跟两个数据集,最靠近UPDATE语句的是主数据集,随后是更新数据集。UPDATE在横向合并两个数据集时和MERGE相似,都是用更新数据集修改主数据集。 区别:MERGE,对更新数据集缺失值的处理,MERGE语句是不顾后果的,它会统统用远离MERGE语句数据集的数据覆盖靠近MERGE语句数据集的数据,即便是缺失值也会覆盖。 但是,有时候商业需求要求在更新数据集数据缺失的情况下用主数据集数据替代,这时候就是UPDATE语句、在使用SAS做数据仓库的ETL开发时就是如此。 MODIFY:每次更新非常庞大的数据集需要定期更新,但是每次更新对象都是动态的,可以比MERGE/UPDATE减少内存消耗。 MODIFY的四种数据集的访问机制:匹配访问、索引访问、观测访问、观测序列号访问、顺序访问。 @和@@的应用:@ 表示执行下一个操作时,指针移到下一个记录。@@表示执行下一个操作,指针保持在当前记录。 proc:过程步的开始是procedure的缩写。
4.输出观测的方法:4.1没有任何输出语句–输出PDV;4.2OUTPUT;REPLACE;REMOVE
5.put语句:可以输出变量信息到指定地点,包括:输出到SAS系统的日志窗口,输出到FILE语句规划的外部文件,输出到SAS系统的OUTPUT窗口。
代码语言:javascript复制 SAS系统使用PUT语句输出时,可以用指针控制,注意列指针控制的@要放在变量之前,行固定说明符的@要放在变量之后。
PUT应用:输出结果到LOG窗口,调试程序运行过程中变量产生的中间值。输出结果到外部文件。
6.@和@@应用/单尾符和双尾符
代码语言:javascript复制一般单尾符应用在PUT,双尾符应用在INPUT。
单尾符:一个数据行用多个PUT语句输出数据,或多个INPUT语句输入数据。
双尾符:一个输入数据行含有多个观测的值,用INPUT语句读入,或者把多个观测输出到一个数据行,用PUT。
7.FIEL语句
代码语言:javascript复制FILE语句用于规定当前的输出文件,并且该文件一定是一个不同于SAS文件的外部文件。且与PUT配合使用。
INFILE语句 INFILE file-specification<options><host-options>;独有常用项:DSD dlm='',FRISTOBS,LENGTH,MISSOVER,_INFILE_