《SAS编程演义》推荐语
by sxlion
作者抱着朴素的助人初衷和与大家分享SAS编程经验的愿望,开始了写书历程,并保持着高昂的写作热情直到本书完成。据我所知,准备或部分完成SAS书稿的SASor(SAS爱好者的代称)不少,其中包括像我这样的鸡血分子,但是能够忍受重复编辑文字代码过程数日长时间的枯燥和保持追求更好一点的耐心,坚持到出版那一刻的SASor却屈指可数。纵览全书,作者在分析了市场上已有SAS参考书籍特点的基础上,给了本书一个较好的定位,填补了当前SAS实用编程书籍的较大缺口。本书章节内容丰富、编制合理,各章节富有层次和逻辑感,从各要点的选择与偏重就可见一斑。以绘图章节为例,中文SAS书籍基本上缺失了画图编程内容,即使有也是粗略的介绍,并无实质参考性。本书画图章节首先全面介绍SAS三种绘图功能模块,然后选择功能较强、上手较为容易的ODS(Output Delivery System)图形系统作实例绘图实现方式,运用逐步提问的方式,展示各类系列图形编程示例,举例丰富、又有一定的深度,较为全面的讲解了各种绘图编程方法。内容上安排匠心独具,实用性参考性很强。
显然,任何一本书,都不可能解决学习工作中的方案设计、数据收集、整理、分析及绘图展示等数据方面的所有问题,但是本书所叙内容对于SAS编程要素的解读、数据操作与管理、基于数据的绘图与制表等等均有实用参考功能和启发引导作用。因此,此书可作为不同编程水平层级的SASor案头常备书。
再次为作者的勤奋和诚意点赞!
邵小龙
原创文章: ”《SAS编程演义》推荐语“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/442
by sxlion
SAS绘图即学即用系列连载4.0–点图: 以下代码 可以拷贝到SAS编辑器中,直接使用;稍作更改便可得到自己满意的图形。以下来自一本关于SAS绘图的书稿(未出版草稿),均为本人原创。 完整代码详见SAS资源资讯列表 www.saslist.net
4.0 点图
也可使用SYMBOL全局选项来改变点的属性。
1 2 3 4 5 6 7 8 | FILENAME file "d:\SAS_charts\sample401.png"; goptions reset=all device=png gsfname=file/*设置图片格式和存放点*/ hsize=10cm vsize=8cm ; /* 设置绘图区域大小 */ symbol color=black value=dot ; /* 设置点属性 */ proc gplot data=sashelp.class; plot weight*height/ vzero; run; quit; |
1 2 3 4 5 6 7 8 9 | FILENAME file "d:\SAS_charts\sample402.png"; goptions reset=all device=png gsfname=file hsize=8cm vsize=8cm ; /* 设置绘图区域大小 */ symbol1 color=blue value=square ; /* 设置各分组数据散点的属性 */ symbol2 color=red value=squarefilled ; proc gplot data=sashelp.class; plot weight*height=sex/vzero; /* 使用绘图程序必须语句和选项*/ run; quit; |
1 2 3 4 5 6 7 8 9 10 | FILENAME file "d:\SAS_charts\sample403.png"; goptions reset=all device=png gsfname=file hsize=12cm vsize=8cm ; /* 设置绘图区域大小 */ symbol1 color=blue value=squarefilled ; /* 设置各分组数据散点的属性 */ symbol2 color=black value=dot ; proc gplot data=sashelp.class; plot weight*age /vzero; /* 使用绘图程序必须语句和选项*/ plot2 height*age /vzero; /* 使用绘图程序必须语句和选项*/ run; quit; |
标记数据点和参考线
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | FILENAME file "d:\SAS_charts\sample404.png"; goptions reset=all device=png gsfname=file hsize=10cm vsize=10cm ; /* 设置绘图区域大小 */ symbol1 color=orange value=dot H=2 POINTLABEL=("#name" JUSTIFY=center) ; /* 设置数据点的属性 */ axis1 order= (50 to 74 by 12) LABEL=( "身高/英寸") major=none minor=none; /*调整坐标轴的显示、改变轴标签内容*/ axis2 order= (40 to 140 by 50) LABEL=(angle=90 "体重/磅") major=none minor=none; /*调整坐标轴的显示、改变轴标签内容和位置*/ Title H=0.5cm font="MingLiU" "班级男生身高分布图" ; Footnote justify=left "Data resource: sashelp.class" ; proc gplot data=sashelp.class; plot weight*height / haxis = axis1 /*指定横坐标设置为前面全局设置坐标axis1*/ vaxis =axis2 /*指定纵坐标设置为前面全局设置坐标axis2*/ href = 62 chref=black /* 增加参考线*/ vref = 90 cvref=black; where sex="男" ; run; quit; |
原创文章: ”SAS绘图即学即用系列连载4.0-点图“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/403
2013已至,春节将至,本博距上次更新已经有两个月了。一个不成熟的观点一直在酝酿,到现在为止,还不大成熟。不过有些事情,现在不写,以后恐怕就也没有机会写了。
大数据,皇帝新装
这几天,终于可以闲下来了,翻翻了给俺家闺女准备的童话读物——《安徒生童话》,于是重新温故了下小时候读过的《皇帝的新装》。读完感觉:经典就是经典,这个世界有时候就是那么简单的重复着,故事老套,几百年都可以不变,情节都可以一样。 记得2000年左右上大学那会,一句“21世纪,是生物学的世纪” ,害得多少莘莘学子挤破脑袋去抢报生物专业。四年后,要么毕业去卖假药,比如“鳖精”、“红桃k”,“太阳神”等等;要么一条道读到黑——从硕士,博士,圣斗士,到烈士。现在不知多少“受害学子”在追问是谁不负责任的乱说 (注:这里不是埋汰学生物的人,这些都是学生物的同学跟我的吐槽)。类似的“21世纪是XX的世纪”可多了,什么“计算机的世纪”,“互联网的世纪”,“厨师的世纪”,最近还出了个“大数据的时代”。不扯远了, 还是谈谈童话吧, 皇帝爱衣服, 要新装;大臣爱皇帝,要皇帝开心;百姓爱大臣,要维护大臣;骗子爱金子,要卖衣服给皇帝。 于是生意就这么成交了,大家都开心了。本来新装游行都是这么顺利地,成功地进行,也是值得庆祝的。最讨厌的是安徒生, 偏偏安排个小朋友,说了那么一句不和谐的话,搞得这则童话变笑话,一直流传到现在。 想想,大数据,不就是这么回事么。 这个世界需要创新(未考证), 政府们需要业绩(真的), 科学家们需要拿课题(真的),厂家们需要卖硬件/软件(千真万确!!!,看看SAS的HPA和SAP的HANA硬件需求)。就这样,新的一场新装游行开始了,奥巴马的“新能源”不吸引人了,赶紧上新货——“大数据”,哄选民很重要。于是政府点头,科学家们牵头开会, 硬件软件厂商搭台,各方互动开始,大家有兴趣,可以看看我2012年收集的微博资讯——会议信息。 http://saslist.net
原创文章: ”2013评点——怎么才能成为数据分析专家“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/310
SAS公司历史全知道一
by sxlion
2011年美国最大的计算机专业杂志PCMAG杂志列出了科技界领袖的专属富豪榜中,SAS公司联合创始人兼CEO James Goodnight(硬翻译成“晚安”) 以69亿美元位居富豪榜第八。 如果不是因为使用SAS软件的原因,我相信大多数人不知道Goodnight这个人,他绝对够低调。另外,他也是美国北卡罗来纳州首富。
在上个世纪,SPSS,BMDP和SAS被称为国际三大统计软件,后来BMDP被 SPSS收购,SPSS今年又被IBM收购。SPSS收了BMDP以后就晾一边,晾没了,如今连域名bmdp.com处于待售状态。SPSS前老板老聂Norman Nie把SPSS卖给IBM后,自己捣腾个做R商业版本的公司Revolution R,看来老聂把BMDP和SPSS整垮了,还不甘心。不过看不出Revolution有什么前途,如今只剩下晚安老头孤独求败了。 from: http://saslist.net
图1. Goodnight和他收藏的岩石、矿石、化石和陨石
原创文章: ”SAS公司历史全知道一“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/299
没事就爱在微博上搜“SAS”关键词,据不完全统计,发现与SAS有关的95%微博都是SASor对SAS的各种吐槽。精选其中一部分,分享各种欢乐 ! SASlist.net
1, 学SAS才发现,智商是硬伤。
点评:我看别人学SAS,也有同样的发现。 by oloolo
2, 一天一夜,只为下个SAS。。。 by 寒月里
点评:你值得拥有! You deserve it !
3, sas课实在太难,大家都拿着手机对着屏幕拍照,希望能捕捉到老师写的代码,此起彼伏的咔嚓咔嚓声,让我有种置身发布会现场的错觉。 by 暴君小邹
点评:SAS耍的就是大牌。 http://SASlist.net
4, 这里是SAS课,台上老师突然问:“现在是2013年对吧?” “…….” 数統的都是些神。 by 朱珣碧是强大的变形金刚
点评:你的老师肯定是用的盗版软件! http://SASlist.net
5, 妹的SAS,我电脑和你有仇!为毛同一个安装文件,同一道程序,就我的不行! 是我太爱你了嘛?!! by chenyA玲
点评: 论坛月经贴,微博日经贴。 http://SASlist.net
原创文章: ”SASor界吐槽若干“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/291
CATS和CATX函数
这两个函数用于连接字符串。函数CATS首先去掉每个要连接字符串的首尾空格。CATX也会去掉首尾的空格,并且还会在每个字符串之间插入分隔符(CATX函数的第一个语句)。
这些函数需要非常注意的点是结果的存储长度,如果没有预先定义,默认是长度200。而你使用连接符号(||或!!)只是这些连接字符串长度之和。
如果你有一系列的变量如Base1-Basen,你可以在列表前使用关键词‘OF’。最后,列表中的值可以是字母,也可以说数字。如果一些语句是数字,SAS将会把数字当作字母对待,并且不会在SAS log里面出现转换信息。
下面的例子示意这些函数字母操作去掉空格,函数CATX字母插入分隔符。
程序17
1 2 3 4 5 6 7 8 | data join_up; length Cats $ 6 Catx $ 13; String1 = 'ABC '; String2 = ' XYZ '; String3 = '12345'; Cats = cats(String1,string2); Catx = catx('-',of String1-String3); run; |
图17:程序17的输出结果
Cats Catx
ABCXYZ ABC-XYZ-12345
COUNT和COUNTC函数
SAS有两个计数函数,COUNT和COUNTC。它们之间的区别就像FIND和FINDC。COUNT计算一个子字符串在一个字符串中出现的次数,COUNTC计算单独字母在字符串中出现的次数。这些函数的语句和FIND和FINDC一样。第一个语句是你想要搜索的字符串,第二个语句是子字符串(COUNT)或一列字母(COUNTC)。最后你可以在第三个语句中使用可选的修饰符,其中修饰符‘i’(忽略大小写)最有用了。 (更多…)
原创文章: ”SAS函数精选三 翻译“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/284
SUBSTR函数
如果你需要从一个字符串中提取一个子字符串,你需要SUBSTR函数。需要提醒一下的是,有个函数SUBSTRN非常像SUBSTR,就是多了一些额外的特征。我不知道这些特征是否经常被需要,因此本文选择描述稍微简单的函数SUBSTR。
此函数的第一个语句是输入字符串,第二个语句是你想要提取字符串的开始位置,第三个是,可选语句,设定子字符串的长度。如果你忽略第三个语句,函数将提取输入字符串中最后一个非空字母,也就是说,它忽略输入字符串的后面的空格(这个特征非常有用)。
在我们继续例子之前,理解默认长度这个概念非常重要。比如说,在下一个程序中,如果你没有写LENGTH语句,SAS将仍然需要设置一个长度给State。对于这个函数,默认长度等于函数第一个语句的长度。你不能使得从字符串提取的子字符串长于字符串本身。很多其他的SAS字符函数默认长度为200。需要保证的是,具有这个功能的函数需要在DATA步中包含LENGTH语句。最好是包含LENGTH语句,即使是不需要,这样是没有风险的。http://saslist.net/
下面是一个使用SUBSTR函数的简单例子。
程序9
1 2 3 4 5 6 7 8 9 | data pieces_parts; input Id $9.; length State $ 2; State = substr(Id,3,2); Num = input(substr(Id,5),4.); datalines; XYNY123 XYNJ1234 ; |
这里是你想要提取州号码(从位置3开始,一共两位),ID的数字部分从位置5开始。注意你忽略数值提取中的第三个语句。这个非常有用,因为有的数字是3个字符长,有的是4个字符长。这个例子中,你使用INPUT函数将字符转化为数值。
图9,程序9的输出结果
Id State Num
XYNY123 NY 123
XYNJ1234 NJ 1234
使用等号在左边的SUBSTR函数
在早期学SAS的时候,等号在左边的SUBSTR函数被称为是SUBSTR假函数。据我所知,这是SAS唯一等号在左边的函数。下面是它的用途:
允许你用新的字符来替代已有字符串中的字符。这个听起来挺复杂的,但是你通过下面的程序看到,这实际上是很直接的方式。下面的程序使用SUBSTR函数(等号在左边的)来遮住帐号的前五个字符。 (更多…)
原创文章: ”SAS函数精选二 翻译“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/283
下面是Dr. Ron Cody的一篇关于SAS函数的文章,非常好的函数介绍文章。曾经在2009年SAS公司(上海)举办的一次SASor聚会上,我做了一次关于SAS函数的presentation分享,见 ppt和正文,我发现竟然有部分内容重合。 我个人非常喜欢SAS系统提供的函数,建议老手新手都可以读读下面的文章,祝都有所获!
by Dr. Ron Cody 翻译 sxlion
摘要:
SAS函数为你的数据步(DATA step)编程提供惊人的能力。有一部分SAS函数是精华,能够帮助你节省大量不必要的代码。这篇文章内容覆盖其中最有用的一些SAS函数。有些函数可能对你来说有些陌生,然后她们将会改变你的编程方式,并助你轻松完成日常的编程任务。
介绍:
本文写到的大部分函数都与字符数据有关,这些函数的功能包括搜索字符串,查找和替代字符串,或连接字符串,还有些函数能测量两个字符串之间的距离(这对于“模糊”配对非常有用)。一些最新和最叹为观止的函数还以Call例程的形式存在。你知道怎么用函数在同一个观察值进行排序吗?你知道你不仅可以定位一列变量中极大或极小值,而且可以定位到第二位、第三位最大或最小的值? 如果你觉得上面的介绍能够吸引你的兴趣,请继续往下读! http://saslist.net
SAS是怎样存储字符值的?
在我们讨论字符函数之前,了解SAS怎样存储函数值非常重要。为了帮助讨论,你首先需要理解两个重要的字符函数:LENGTHN和 LENGTHC。
LENGTHN和 LENGTHC
这两个函数返回字符值的长度信息,其中LENGTHN返回未计算后缀空格语句的长度。LENGTHC返回字符变量的存储长度。你也许对旧的SAS函数LENGTH比较熟悉,大部分情况下函数LENGTH和LENGTHC返回同样的值。有一个例外的是,当语句里是缺失值时,LENGTH函数返回的是1,而LENGTHN返回0。有一些新函数看起来是在旧函数后面加个字母“n”,这里的“n”代表“空字符串”(“null string”)。在SAS9中,长度为0的字符串概念被引进。在大多数情况下,如果你看到一个你似曾相识的新函数(比如说新函数TRIMN, (更多…)
原创文章: ”SAS函数精选一 翻译“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/282
原创文章: ”SAS资讯 from 新浪微博 – 2012-03-02“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/233
原创文章: ”SAS资讯 from 新浪微博 – 2012-02-02“,转载请注明: 转自SAS资源资讯列表
本文链接地址: http://saslist.net/archives/230