msgbartop
List for SAS fans and programmer
msgbarbottom

21 9月 11 一个SAS菜鸟的故事 实习篇


导读:本文作者hssnow现为中南大学统计系大四本科生,刚刚结束了一家国际知名药厂做SAS程序员的实习,下面是他与SAS的故事,与大家分享。一共两篇,本文是第二篇,第一篇是学习篇 。

寻找实习

整个寻找实习的过程算是有点曲折吧。大三下学期想在长沙本地找个SAS相关实习,可后来发现这是有多么的不现实,长沙基本没有用SAS的企业。这样,就只能准备暑期去外面找了,SAS相关的工作机会基本在北上广,我的目标是北京或上海。

中南大学,不太出名,而且地处长沙。一阵搜索网投之后,收到的回复基本是:“我们暂不考虑本科”,“我们目前只考虑本地学生”,“你XX时间过来面试吧,我们暂不提供电话面试”,基本是诸如此类的答复。学校这边的期末考试也没结束,在没有一定可能性的情况下我也真的没办法直接跑去北京或上海,有点郁闷。终于,淘宝那边有个机会,电面了30分钟多,呵呵,最后接到通知,还是相比研究生竞争力不足,不过后来交流,那边也给了我些指导和建议,非常感谢。

而后,求助于jth(胡江堂)有没有什么SAS相关的机会,随后得到消息他们公司Sanofi Pasteur Biometry China(赛诺菲巴斯德—中国生物统计及数据管理中心)那正好有需求,可以给我个机会。然后发了简历,过来几天部门经理(Mr Tian)打来了面试电话。

实习面试

电面大约进行了半个多小时。部门经理(Mr Tian)人很好很随和,自已一开始有点紧张,后面慢慢好些了。

一个开始主要是问的SAS相关问题,包括:

  1. 问了下我的SAS学习经历,回答如我之前所述。
  2. 问了些SAS macro的基本问题,寒假期间刚好仔细的看了看《Carpenter’s Complete Guide to the SAS Macro Language》,基本都回答上了。
  3. 问了我对SAS data步和proc sql想比较怎么看,我个人其实用sql还挺多的,当时回答的主要二者各有所长吧,说了个简单的例子。
  4. 又问SAS效率的问题,我坦言研究不多,因为我平时接触大数据不多,没太多考虑过。
  5. 问了对SAS gplot等作图的熟悉情况,因为之前上论坛看帖,相关问题也查过一些,简单的说了些。
  6. 还问了有没有SAS的实际应用,回答的是自己课程需要、用过SAS做相关一些问题以及一个帮别人做的小项目。

另一方面问了些简单的统计学问题,聊聊了一些我个人其他情况,我也请教了下要不要本校保研、考研和找工作的问题。Tian也很热情的给了些意见,呵呵,真的很好的一个老板。

而后一周后,终于基本确定了赛诺菲的实习机会。后来2天,又有个咨询公司的机会,当然鱼和熊掌不能兼得。赛诺菲,我来了。

实习期间主要工作包括:

1)编写一个Macro来帮助QC做数据集的比较

2)研究SAS中数值精度方面的问题,包括其对做数据分析可能带来的问题和相应的解决方案(注意事项)

3)生成报表时标题(title)和脚注(footnote)的控制问题

4)SAS 9.2 Graphics中的新功能在生物统计作图方面的应用

5)编写一个Macro来进行DDT(Data Definition Table)的检测工作

实习收获

这10周的实习,让我各方面都很收获颇丰,呵呵

编程技术上获得的经验包括:

1)  关于宏编程

  • 可以宏之间相互调用,但应尽量避免宏内部嵌套宏。因为宏嵌套会对宏变量的引用控制造成不便,且可能会有其他稳定性问题。
  • 宏内部为实现一定的进程控制,可尝试用%goto语句,如某宏中,可先检查输入数据及是否存在,不存在的话直接%goto到宏末尾,避免其他无效运行。
  • 注意程序的稳健性,如%test(test=Y/y),合理使用upcase()对宏变量test进行处理,使得Y或y都是有效输入。
  • 注意清理程序产生的临时数据集。如宏程序中可以包含“proc datasets lib=work nolist;       delete _: ;run;”来清除work逻辑库下以“_”开头的临时数据集。

2)  关于SAS数值精度

SAS以浮点形式存储数值,绝大多数情况下,凡是遇到小数/分数(0.1,0.2,0.3等),SAS都无法精确存储(例外的是0.5,0.25这样2的负整次幂)。所以会有“a=0.1,b=0.3,而a*3确不等于b”的情况。对应方案就是合理使用round()函数。相关文章:

《Numeric Precision 101》《Numeric Length Concepts and Consequences》

3)  关于SAS作图

SAS 9.2之后在作图方面有很大改进,尤其是SG过程步,有很好的图形默认效果,使得用户可以更专注于“统计”作图方面,而非图形美化上。当然如要自己控制,主要是对点标记符号和线型的控制,主要参数在于markerattrs=和lineattrs=的使用。还有和inset插入文字语句,相比以前也挺方便。这里有篇总结的比较好的文章:《Graphing Made Easy with SG Procedures》

另外Annotate Facility方面一般是加一些文字、线条、符号等,一个主要是在于控制annotate的位置,这里有篇文章可以参考下:《SAS Graph Annotate Coordinate Systems by Example》

4)  其他一些

  •   调用某个外部文件时可以用%include来实现。
  •   获取数据集文件信息等可以尝试用open()、attrn()等系列函数
  •   善用proc sql中的词典表(即sashelp逻辑库中v开头的系统试图),里面记录很多系统、数据集或变量等系统。

实习的体会心得包括:

1)医药行业的统计编程人员

其类似于SAS程序员,一般和统计师、数据管理部门合作,对临床数据进行分析、报表制作等工作。使用到的SAS知识大多为SAS Base中的,主要包括SAS Macro/SQL/Graph,proc report的应用,SAS STAT中的一些过称步,以及SAS输出为rtf、pdf等文件及ods的一些应用。在《 SAS Programming in the Pharmaceutical Industry》第一章中也有些介绍。

2)SAS程序编写:理解需求,多讨论,发散思维。

在编写程序来解决某一业务问题前,多讨论,多角度考虑问题,尽量对业务需求有深刻、全面的理解,从用户使用角度多可虑。这貌似大道理,不过确实如此,记得看到过一句话“方向不对,越努力反而越尴尬”。

实习的第1个任务,和指导老师写数据集比较的Macro。

面临的问题是:对同一份数据,须由2个人独立生成分析数据集,要对这2个分析数据集进行比较来保证正确性;而每个人的分析数据集中变量个数、名称等都不相同,直接用proc compare无法进行。刚开始我们考虑对分析数据集设定统一要求,如数值变量和属性变量分别以怎样的前缀命名,以便于标准化处理再进行比较。这些规则要便于编程、又得让每个人接受,并不是很容易设定。

而后来,经过进一步交流讨论,我们发现可以不用要求变量名统一,在生成报表时增加个选项,即可以统一分析数据机包含的变量及其顺序,在macro中全部按顺序统一处理即可。这样不用改变每个人的编程习惯也大大简化了代码。

3)编程规范十分重要

最基本的,自己写程序,要时刻注意保存、备份、版本更新归档等,便于自己管理。另一方面,自己的一个程序,会需要给其他人员使用或维护,所以,写的时候就要认真考虑代码逻辑易于他人理解、注释清晰等。还比如:程序顶部要写个简洁明了的介绍性注释,包括该程序的运行环境、软件版本、有哪些输入输出、注意事项等。这些都是我自己以前没有接触或真正理解其价值的。

4)遇到问题要钻研,也要适度

遇见某一特定问题是,要肯钻研,善用SAS help的同时还需多查些相关的论文,有的文章总结的非常好。另一方面是,钻研也要把握好度,之前探究SAS 数值精度问题时感觉要一直钻下去的话很可能会陷进去,比如要研究计算机存储原理之类的了。衡量“度”就要参考实际需要了,对于SAS数值精度问题,一般理解SAS的数值存储方式、知道何时会有精度问题,原因大致是什么,掌握相应问题的应对方法即可。

5)研读SAS 帮助文档

另在研究SAS 9.2作图相关问题时,愈发感觉到SAS 帮助文档写得实在是很好,逻辑、结构、引用等都很棒。要想全面、清晰的理解SAS某一方面的应用,一定得好好研究帮助文档。帮助文档唯一的不足可能是例子相对较少且较为简略,需要自己多尝试,或多学习SAS官网上提供的SAS Samples。

6)学好SAS Macro

SAS macro实在是很强大,应用也非常广泛。自己还得多多学习、多多应用。

 实习过程中的成长,更多的是在做人方面的收获吧,个人感觉其更重于在SAS技术方面的收获:

首先,理解平等,懂得尊重。

刚进公司时,面对各种牛背景,对自己的乡下小本科确实有些惶恐,不过后来很快发现,同事相处中完全不必在意“身份、背景”之类的东西,老板、员工、实习生和保洁员阿姨都是一样相互尊重。在北京,这个本是“混杂”的地方,更有太多高高低低的身份或是背景,但是,人与人之间都应该相互尊重。正如《叶问2》中所提,在人格上大家都是平等的,相互尊重,本是自然,无论何时何地,这点都应该被深刻的理解与铭记。

其次,做个热心的人,分享的人。

能进赛诺菲实习,最大感谢胡江堂大哥的热心推荐,三言两语道不尽啊。还有公司的老板、其他同事们,面对我各种傻瓜问题都是十分的热心与热情;还有就是,无论谁去哪玩了,总会带些好吃的特产回来,大伙就一边吃一边聊,分享自己的快乐、感触、想法,独乐之不如众乐之啊。我想,无论到哪,我也应该将感受到的温暖传递下去。

 最后,虽然SAS实习告一段落,但是SAS的学习正在继续。自己对于SAS Base还不是足够熟悉,SAS STST/ETS也有N多知识要看,SAS EM还在慢慢开辟。另作为统计学专业的学生,统计功底加强也是始终不能放的。吴喜之老师《统计学:从数据到结论》中有句“要明白自己是在干什么,不要在得到一堆毫无意义的垃圾之后,还沾沾自喜!”,所以得时刻提醒自己,可不能拿着SAS生产“垃圾”啊,别给SAS抹黑了,呵呵。再次感谢各位师友、同学、前辈、网友、朋友、家人等等和没提及的,见过面的和没见过面的,这些所有人帮助过菜鸟成长的人们,谢谢你们,谢谢。

————————————————————————————————–—–

注:hssnow的个人邮箱:hssnow311@gmail.com 个人网站:http://hssnow.name,非常希望能和大家交流 。

结束语:一个SAS菜鸟的故事学习篇和实习篇,简单的看就是一个菜鸟,被一个学长领进门、然后和几个同学共同学习、接着被一帮前辈帮助而成长的故事(当然还没有结束)。这个故事本身没什么特别的地方,不过初学SAS过程也引起很多不同背景的SASor的共鸣,毕竟每个高手都是从菜鸟走过来的。

原创文章: ”一个SAS菜鸟的故事 实习篇“,转载请注明: 转自SAS资源资讯列表

本文链接地址: http://saslist.net/archives/202


Reader's Comments

  1.    

    撸过 。。。

    Reply to this comment

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.