爱之深,恨之切,SAS用久了,难免有牢骚
playmore携Matlab、R、Python、C、C++、Java等一众小三团前来踢版
说说你和SAS从初识,到相恋,再到心生二意,直至越看越不“顺眼”的心路历程吧
在抱怨正房SAS缺点的同时,也可以谈谈其他小三的优点
坚守原配固然值得敬配,但如想把小三扶正也表示欢迎
毕竟这里谈的都是工具,可以也需要相互取长补短,以达到各种目的
我在这里先抛砖引玉了,说的不对还望指正
欢迎跟贴,另本人不是版主,回贴只能送个一两分聊表心意
第一,我现在觉得SAS比较麻烦的问题在于数据结构的缺乏,SAS中只有表,没有一般概念上的数组、矩阵、列表,也没有函数。当然SAS提供了各种方法用来解决这个问题,但总是各种不方便。就拿矩阵来说,可以用Proc IML来做,但查看中间结果要print出来,最终结果要create张表导出来,最后还是要落到表上。不同的过程步通过表相互联系,表都是存硬盘上的,那就是说你过程步再快,整个程序也快不过硬盘的转速。另外更要命的是数据结构的缺乏会限制一个人解决问题的方法和手段,比如天马行空的指针就只能在C里实现,用R的话你只能转为表结构加索引,如果用SAS的话,DATA步总是顺次执行,不能方便的跳转,所以解决起来就更麻烦了。
第二,另外一个问题是数据步和过程步绝对的封闭、相对的开放。一个数据步后一定跟个run,一个过程步后一定跟个quit(有时为了互动下也能加run),即便你不加,编译的时候也会给你自动加上。如果你能在数据步里调上一个过程步,那一定算是高级应用了,因为即便不是出于想法的出众,那怪异的代码也会让一般人望而却步。我觉得这个问题解决起来应该比较难,如果能解决,那SAS一定会改名成SAS++了。这个问题对于一般程序化的商业计算应该还算是个优点,但如果你想要有点创新的话,那应该会比较麻烦了。
第三,最后一个问题是画图真的很麻烦,不利于数据的可视化。你可以会说只要功夫深,一样可以画出漂亮的图形。但是你应该不会为了展示一个中间结果上花太大的功夫,这种情况下,我只需要可以用plot(x,y)就可以跳出一幅图的命令,然后通过平移和拖动就可以从各种角度看到图形的GUI。这一点上我只觉得Matlab做的不错。