近期因为工作的关系,要开始用R了,只好放下小小的执着,放下SAS拿起R,写这篇文章缅怀一下这份执着。
我从2012年开始研究数据分析,因为SAS看起来高大上,入门就决定选SAS。后来觉得SAS实在是很对我的胃口(简单,高效,可靠),所以就一直在用。我用SAS大概经过两个阶段。
1.0阶段_爬行期:这个时候大多数就是在使用SAS的数据步和过程步,总之就是在一个步一个步的写,碰到复杂一些的任务就写很多很多的程序,然后串起来执行。(后来用EG的时候做这个很方便)。后来慢慢尝试了sas的很多偏门功能,比如发邮件,web数据抓取,文本分析,iml矩阵运算等。
2.0阶段_行走期:用sas的宏编写复杂的控制和算法。到了这里我觉得SAS像是一门完整的语言了,虽然数据结构很简单,变量的控制也比较简单,但是已经可以做很多事情了。以下是一些总结,供参考:
从存储、控制、计算三个角度来看。
在数据步sas只提供了数据集(总之最后都是表)这种结构,到宏编程的时候提供了局部宏变量和全部宏变量,通过宏变量的作用域自然的把宏变量分成了控制变量(在全局作用)和计算变量(局部宏中作用)。通过&令牌的规则还可以创建宏变量数组。
(这里多嘴一句,早期宏变量的文本替代功能到最后实现的多种功能,是不是一把很锋利的奥卡姆剃刀?)
从宏的角度上来看,data步是一个宏,proc步也是一个宏,自己用宏编写的函数或者过程也是一个宏,把宏看成一个最小的单元,那么结论就是只有宏才能调用宏。根据功能分化,可以是负责控制进程的宏,可以是负责计算某个值的宏,可以是执行某个短过程的宏...
存储:临时数据集,永久数据集,宏变量(当然还有矩阵)
控制:宏变量
计算:过程步,ODS结果,个人定制宏(相当于函数)
总之,因为机制很简单,所以写的时候要多花点心思。
以一个算法为例:
1、待分析数据以数据集的形式存放
2、通过数据字典在过程中读取数据集的属性
3、建立对应的逻辑库存放数据集
4、建立主迭代表,控制迭代的进行以及保存重要参数
5、在主宏中设定迭代上限,并设定对主迭代表的更新
R的话看起来更灵活一些,撸一遍再来心得。以后就是R的日子了...



雷达卡









京公网安备 11010802022788号







