请选择 进入手机版 | 继续访问电脑版
楼主: 安然2016
4151 2

[软件应用] Hi,告诉你一个简单优雅的学好SAS的方法! [推广有奖]

  • 0关注
  • 13粉丝

讲师

7%

还不是VIP/贵宾

-

威望
0
论坛币
50136 个
通用积分
1.0002
学术水平
4 点
热心指数
12 点
信用等级
5 点
经验
5550 点
帖子
252
精华
0
在线时间
111 小时
注册时间
2016-2-16
最后登录
2017-5-25

安然2016 发表于 2016-2-23 16:43:51 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

没有这样的方法!

老老实实看书,勤勤恳恳练手,规规矩矩编程!

Get Your Hands Dirty!



老老实实看书!


关于SAS学习,目的不同,学习的策略也会有所不同。我们姑且将学习目的分为三种:

  • T1. 点到即止,套PROC型

  • T2. 深入应用,编程统计型

  • T3. 走火入魔,开发工具型



首先T1,点到即止,套PROC型


应该说,抱这种目的,可能大多为非统计,非数据分析人员。这部分群体使用SAS的目的只是希望在有限的时间里,大致了解SAS,借助SAS实现一些常规的统计分析。因此,对SAS的运行机制,DATA步编程技巧等不做过高的要求。


推荐书籍:

  • SAS系统使用SAS SATA手册, 北大老教授高惠璇老师编著 , 虽然有些老旧,但是确实是经典全面,可以当成字典翻阅。

  • Applied Statistics and the SAS Programming Language, Ronald Cody的作品,已出到第五版,中文版译名:SAS应用统计分析。

  • SAS统计分析教程 , 胡良平老师的书。胡老师算是国内最早引进,介绍SAS的教授吧。胡老师著作丰富,但你需要留个心眼仔细挑,这本当统计过程步的字典使用,其价值是毋庸置疑的。



再说T2,深入应用,编程统计型


若果希望成为职业选手,以SAS作为职业技能谋生,那就要从基础深入钻研了。从SAS的运行机制,到数据处理技巧,再到统计分析方法的实现以及统计结果的展现等,都是需要花费一定的时间和精力的。


这一部分,分两块来说吧。

1. 非统计部分

对于非统计部分,分以下三块:

(1)基本概念及编程技巧:首推官方的Language Reference Concepts, 概念介绍的特别详细 , 9.4版的846页, 没办法,SAS就是这么庞杂。如果肯花时间把它啃下来,其他介绍BASE部分的书,都可忽略。当然,不是人人都有那样的时间、精力和耐性。如果嫌麻烦,希望走一点速成的套路,推荐:SAS官方的小三件套。

  • P1:SAS Programming I Essentials

  • P2:SAS Programming II Manipulating Data with the DATA Step

  • P3:SAS Programming III Advanced Techniques


如果还是觉得太多,那就只能推荐 The Little SAS Book 了,目前已经是第五版了,这是一本被推荐了无数次的SAS 教材。


当然,中文书里也有几本不错的偷懒的书:

  • SAS V8基础教程

  • SAS编程与数据挖掘商业案例深入解析

  • SAS:数据处理、分析优化与商业应用



(2) 绘图:

  • ODS Graphics: Procedures Guide

  • ODS Graphics: Getting Started with Business and Statistical Graphics


ODS Graph 的强大,使得我不再惧怕SAS绘图编程里繁琐的语法,而且基本可以不用SAS/GRAPH 模块了。SAS绘图的终极武器就是GTL语言了。官方参考资料:

  • Graph Template Language: Reference, Third Edition

  • Graph Template Language: User's Guide, Third Edition


当然,舍不得GRAPH的话,建议:

  • SAS/GRAPH : Reference,SAS的画图模块的官方介绍



方便快捷的输出系统,配合Report过程等,以便美观的展现结果。

  • Carpenter's Complete Guide to the SAS Report Procedure

  • Output Delivery System: User's Guide, Third Edition

  • Output Delivery System: Procedures Guide



2. 统计部分

SAS/STAT 13.2 User's Guide, 也是大砖头,能砸死人的那种,但是里面的算法介绍相当详细,并附有参考文献。这也是SAS权威的一个例证。这个部分太过庞杂,如果只是对ANOVA, LOGISTIC, REGRESSION, MIXED MODEL等某个话题感兴趣,那么SAS官方的培训手册(Course Notes)或许是个不错的选择。不过,Course Notes作为SAS公司的培训手册,只给报名参加其培训的学员提供,当然网上也有散落的旧资料,这个时候,想要省点面包钱,那就看各自的搜索能力了。


不过,统计部分的应用,除了基本的统计原理,更要有一定的行业背景。因此,各种和金融,医药等行业结合的SAS书也层出不穷当然,这个当是后话了。


最后T3,走火入魔,开发工具型


为了避免重复劳动,为了让代码更加智能和自动,这时候,我们就需要开发个性化的工具了,最简单的实例就是写自己需要的MACRO. 关于MACRO,首荐官方材料:

Macro Language: Reference, Third Edition,详细介绍了MACRO的原理及运行机制。

另外,两本 MACRO的书,值得一读:

  • SAS Macro Programming Made Easy

  • Carpenter's Complete Guide to SAS Macro



最后的最后,哪里找到这些书?


其实官方材料,基本都包含在了SAS HELP中。如果还不过瘾,请回复"搜索"。或者直接查看这篇文章「众里寻他千百度:谷歌等11条搜索经验,悉数呈现!



勤勤恳恳练手!


先安装好SAS这个巨无霸吧!关于SAS安装的8个问题!


1. 正版SAS安装介质是啥样子滴?


或许安装了太多的盗版SAS软件,都忘了正版SAS的样貌了吧?正版SAS9.4有两个光盘盒,总共6张光盘,每张基本都在4G左右。OMG!果真庞大。


细心观察就会发现,光盘上有订单号。其实光盘盒里还有一份订单摘要信息,详细列出了订购的SAS产品和模块。当然,如果订购的模块越多,安装介质里的容量应该就会越大。


2. 安装时有什么技巧?


总体上讲,SAS 9.4的安装较以前的版本要顺畅许多。

以下几点经验供参考(按重要性排序):

  • 确保安装介质和许可文件是配套的,也即是同一个订单号的

  • 关掉某流氓卫士,某流氓杀毒软件。某流氓公司美其名曰卫士和杀毒软件的流氓软件会流氓地删除某些安装文件及程序文件

  • 安装过程中,会要求来回插入几个光盘很多次,很多次,很多次的(烦死了!),感觉像逗你玩似的。因此,把光盘文件提取出ISO文件,再载入虚拟光驱是比较优雅的安装方法

  • 注意许可文件的日期,系统日期应该处在欲安装的SAS版本发布日期和许可文件到期日期之间。


几个辅助软件:

  • UltraISO,抓取光盘里的ISO文件后,可以丢掉光盘,方便以后拷贝

  • DAEMON Tools Lite,虚拟光驱,装载ISO文件,避免来回取出、插入实体光盘

  • .NET Framework, 安装SAS时需要的微软组件,安装前SAS会自动检测,如果操作系统里没有,可单独下载安装,否则可能会导致SAS高级编辑器出问题



SAS安装光盘提取后是长这样子的(订单号马赛克):




3. SAS安装组件选那些?


SAS的庞杂和臃肿,在选择安装组件时也体现得淋漓尽致。如果机子有足够的存储空间和优秀的性能,都选上也无所谓。但其实大部分组件大多数人大多数时候也都用不上。


那么多产品及模块,简要来说:

  • BASE SAS 是必须的(地基啊,没有它其它的都盖不了)STAT 做统计分析必须的(玩SAS不就是冲这个来的么?)

  • GRAPH 也是应该有的(一图胜千言,没图怎么行?)

  • Access to 是必须的(读入数据库的模块,这个很讨厌的是一种数据库类型算一种模块,要知道一个模块就是一个模块的费用啊!例如没买Access to PC Files 模块的话,导入EXCEL文件都是问题)

  • IML模块(矩阵语言模块,矩阵运算,模拟研究需要)


此外,ETS, OR, QC 以及Genetics等模块,就看企业及个人需求啦。SQL 、MACRO以及ODS GRAPH SYSTEM其实以及包含在BASE SAS 里了。此外,一些报告字体组件,ODS GRAPH DESIGNER /EDITOR 也可以视需要勾选上。


4. 常用SAS的编程环境有哪些?


SAS官方的集成编程开发环境(IDE)至少有三种,可以依据个人喜好选择。

  • SAS DMS, 也就是SAS Foundation的WINDOWS 视窗环境,优点是速度快,缺点是不禁让人感叹,世间竟然还有如此差劲的IDE。



  • SAS Enterprise Guide(SAS EG), C/S模式,在代码自动补全,语法提示,错误定位,代码格式化等各方面都比DMS好很多,还有很多项目流程管理的便捷性。但由于采用客户端/服务器模式,感觉很笨重,反应很慢。




  • SAS Studio, B/S模式,网页操作,与EG类似,较为轻巧。





文:谷鸿秋

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sas的 告诉你 manipulating Programming mixed model 优雅

安然2016 发表于 2016-2-23 17:11:44 |显示全部楼层 |坛友微信交流群
5. 为什么有SAS 产品/模块的许可却无法使用?
要使用SAS某模块的功能,需要:
安装了此产品/模块
并且
获得了次此产品/模块的许可
例如,如果无法导入EXCEL数据,查看许可文件也有Access to PC files的许可,则很有可能是安装介质中就没有此模块的安装文件。

6. 如何查看安装了哪些产品/模块?许可了哪些产品/模块?
三种方法可供选择:
查看订单摘要信息,一般在安装光盘里的install_doc下的订单号(六位数字和字母)文件夹下的SOI.HTML里。
查看安装报告
运行代码查看
查看安装产品及模块:运行proc product_status; run; 查看LOG文件。
查看许可产品及模块:运行proc setinit; run;查看LOG文件。



7. MAC怎么装SAS啊?
WINDOWS 8及以后的操作系统越来越不给力,周围用OS X的高富帅和白富美越来越多,他们也要搞数据做统计,那么问题就来了,MAC怎么装SAS啊?

其实SAS 是没有OS 版的,如果想在MAC 上用SAS, 两条路可以选择:
在MAC上装双系统:OS + WIN/LINUX+SAS
在MACS上装虚拟机:OS+Parallels Desktop+WIN/LINUX+SAS

BTW, WIN10 上可以安装SAS 9.4啦,几乎没有兼容性问题。

8. 哪里下载SAS安装文件?
官网啊,SAS University Edtion。轻巧,免费,WIN, Linux, OS三大操作系统通吃(其实就是虚拟Redhat系统)。

什么?要盗版的啊?
我支持正版!没有哦。(公开场合哪能告诉你啊!)


规规矩矩编程!

这是一个比任何时代都讲究颜值的时代。过去的我们,更多的是消费女色,而现在的我们,也开始消费男色了。你看,那么多的奶油小生走红(当然没我什么事),或许从侧面说明了一些情况。

我隐约记得,蒋介石手下曾有位文人,他大致表示过:人们如果开始正视“美”,那就说明这个社会是进步了。也只有在高度文明的社会,“美”才会获得其应有的尊重和爱护,而不是糟嫉妒和占有。由此可见,对“美”的正直的追求本身就是一种美。

对于木讷的程序袁来说,其实我们也是追求“美”的。 我们对美的追求,一方面体现在追求“美女”上,另一方面体现在追求代码的“美观”上。作为一个半道出家的野生码农,不敢对编程语言的优雅做过多讨论,但是作为一个SAS Programmor 或者Statistician , 对于追求SAS语言的美观,是无可厚非的。

这里,有一个专业术语,叫GPP。或许我们听说过GCP、GMP以及GSP。What is GPP?  GPP, 即Good Programming Practice, 良好的编程实践, 是指为了程序的美观和效率,在长期的实践过程中逐渐形成的,约定俗成的,获得广泛认可的良好的编程习惯和规范的编程风格。

其实没有那个定义啦,是我个人YY,自定义的啦。但良好的编程习惯和规范的编程风格,确实是值得注意和提倡的。GPP不仅方便自己修改、调试、管理和维护自己的代码,也便于同行间代码的交流和共享。那么, 一个SAS Programmor 或者 Statistician 有哪些可以参考的SAS GPP呢?下面将从命名、注释、外观、效率、维护以及宏等方面做一简要介绍。

1、命名  
命名规范包括文档(程序文件),逻辑库、数据集、变量、宏程序、数组以及格式的命名。任何组织和机构都应有一套标准的命名规范,命名应尽可能简洁清楚的表述其含义(如用后缀fmt表示变量格式名),临时数据集及变量名应有一套一致的命名规则(如用_tmp 表示tmp临时变量)。有点建议用驼峰式大小写(Camel Case)命名(如FirstName),但由于SAS不区分大小写,有点建议用下划线命名数据集和变量( 如Fisrt_Name)。

2、注释  
任何代码文件,注释先行。在代码头部的注释框里注明项目名称、代码名称、代码目的、代码作者、发布时间、开发平台、修改日志等信息。此外,在每个主要的DATA步和PROC步前都应增加注释说明,如果使用了一些特别的技巧,也建议增加注释说明。
示例:



3、外观
在具体的编程过程中有很多细节方面的考虑,可以使程序的外观更规范,易读。例如:
(1)关于语句块
程序以DATA步和PROC步分大块,每个DATA步和PROC步均以RUN或者QUIT结尾,以便明确分块边界,也便于每个步独立运行
DATA 步和PROC 步至少空一行以分隔开来
DATA步里按一定的逻辑分节,每节至少空一行
每个PROC 步用”data=dataset”选项明确指定数据集
每个语句独占一行



(2)关于对齐和缩进
全局语句,DATA步和PROC步语句及其相应的RUN和QUIT语句应左对齐,里面的语句应做相应的缩进
DO循环块中,语句要缩进,将END对齐DO
IF语句块中,语句也要缩进,将END对齐IF或ELSE
语句缩进2-5列,但要统一,建议用空格而非制表符



(3)关于语句的位置
所有定义语句(如格式定义、宏程序定义)放置在程序顶部
OPTIONS、 LIBANEM、FILENAME语句放置在程序顶部
%LET 语句定义的宏参数统一放置在宏调用之前
DATA步中先非执行语句(RETAIN、LENGTH、FORMAT、KEEP、DROP、RENAME),后执行语句



4、效率  
在一些规范里,可能不把效率作为基本规范做强调,但是高效的程序能节省大量的时间和资源,也便于日后的维护和管理。
合理使用DROP、KEEP语句,精简数据库,使数据库只保留必要的变量
合理使用WHERE、IF语句,精简数据库,使数据库只保留必要的观测
在互斥条件中,用IF-ELSE 语句替代IF-IF 语句
将最有可能的结果放在IF的第一个条件
IF-ELSE 语句中,用ELSE语句囊括其他可能的条件
分类变量存储为字符
仅对做必要变量进行排序



5、维护
一些TIPS, 方便日后代码的维护。
用%LET语句定义常量, 尽量避免使用硬代码
宏调用嵌套不要超过2层
在程序末尾创建永久数据集,不要分散于程序中
避免日志中不必要的NOTES 和WARNNING
避免非初始化的变量,非初始化的变量的出现可能是因为变量不在数据集中,或者拼写错误。无论哪种情况,都有可能造成错误的结果
避免数据类型的自动转换,使用PUT或INPUT函数,对字符和数字进行显性转换
避免自动格式化
避免过多重复的ERRORS,可以使用options errors=2进行控制
PRINT输出时,使用TITLE语句增加标题
算术及逻辑表达式中,合理使用括号以便使运算顺序更清晰

6、 宏
宏程序的里的代码也应遵循上述规范,不过宏程序因其本身的特殊性,还需遵循额外的一些规范。
定义宏时在%MEND 语句里加上宏变量
宏参数超过两个时,建议使用关键参数
尽量使用局部宏参数,而非全局宏参数
注释用%*
经常使用的宏,存储在自动库中;偶尔只在某个程序中使用的宏,在程序中定义即可
调试宏时使用选项MPRINT、SYMBOLGEN以及 MLOGI

以上只是较为基本,也是较为广泛的编程规范,具体到不同的行业考虑得会更多。例如在医药行业,特别是临床试验中,就必须考虑的FDA、CFDA 等国家法规部门的要求,以及CDISC,ICH 等行业规范。在医药企业,还需遵循各企业相应的标准操作规范(SOP)。


后记

个人体会:没有强大的统计理论+行业知识去用SAS, 感觉就像把iPhone当成对讲机用了!

使用道具

百变小倩 发表于 2016-12-23 18:35:29 |显示全部楼层 |坛友微信交流群
总结的不错,SAS的确功能强大,加油学习

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 09:21