Numeric precision in SAS
上周学习了点SAS数值精度方面的问题,觉得这相关内容还是很值得发掘的,自己小做了个PPT,目录如下:
1.Two aspects of numeric data in SAS
2.Floating-point (real binary)
- Floating point representation
- Concepts
- IEEE system
- A Example
3.Numeric precision: Integer
- Problem: LENGTH statement
- Reason
- Solution
4.Numeric precision: Fraction
- Problem: LENGTH statement
- Reason
- Solution
5.Other considerations
- Exception
- Formula transmutation
6.Conclusions
ppt文件:numeric precision in SAS(by hssnow)
继续阅读SAS中定义字符长度问题
前段时间翻看SASOR上的老帖子,在这个帖子中 ahuige 和 qkaiwei 讨论了下SAS中定义字符长度的问题,觉得挺有意思也挺有用处,摘录如下:
ahuige
1.第一个讨厌的特性,变量按第一次赋值决定变量的长度。
1 2 3 4 5 data xx; x='ab'; x='ab'||'c'; put x=; run;以上的语句,在log窗中可以看到,x的值依然是’ab’;这会让一个使用过其他语言写过这种天经地义的正确写法但又在sas中得到这种结果的人不知所措
ahuige
继续阅读然后现在会有sas的卫道者跳出来说,这有什么,一个变量应该先定义长度,然后再赋值。下面的方法可以解决这个问题
1 2 3 4 5 6 data xx; length x$8.;*这里加一个定义长度; x='ab'; x='ab'||'c'; put x=; run;这个问题的确解决了,log窗里可以看到这里x=’abc’
好,现在初学者认为他已经了解了解决这个问题的方法。但是,下面的pitfall又来了。
1 2 3 4 5 6 data xx; length x$8; x='ab'; x='x||'c'; put x=; run;作者的本意是想得到x=’abc’,但是log里面又显示的是x=’ab’,作者还是又跳进陷阱了。
SAS中dataset行列转换
之前saslist.net分享了一个SAS面经,其中提到对dataset进行行列转换有两种方法:1.proc transpose过程步;2.do循环+array statement。对于这个常见问题,姚志勇编写的《SAS编程与数据挖掘商业案例》中(P104-106)也有讲解,摘录如下:
根据chapt6.fishdata将列转换成行:
1 2 3 4 | proc transpose data=chapt6.fishdata out=chapt6.fishlength(rename=(col1=measurement)); var length1-length4; by location date; run; |
关于SAS学习的一些整理和分享
第一篇日志,将自己学习SAS以来个人认为比较好的一些东西,和大家分享一下。也感谢各坛子上让我学习受益了很多的各位前辈~ :-)
- SAS电子资料下载
- freebookspot和eBooks & eLearning in avaxhome是个人感觉最好的两个的英文资料下载站,书籍资源丰富,免费,无需注册,SAS相关书籍也很多。
- 在SAS官网的SAS Documentation Example Code and Data上可以下载SAS官方出版的书籍、文档的随书代码和数据集。
- SAS的一些官方pdf文档(内容和help文档类似),如SAS 9.2 Language Reference Concepts,SAS 9.2 Macro Language Reference,直接在google上输入“filetype:pdf XXX”很方便可以下载。
- 国内下载站推荐爱问的共享资料版,资源比较丰富,且大部分不要积分也可以下载。
- SAS认证
首先,个人感觉SAS认证考一下还是挺好的,准备过程中能比较系统的了解和学习一下SAS。当然,平时不用的话忘得非常快,编程能力也得靠自己多练,我这方面就太菜了。。。- SAS Base:个人觉得直接使用SAS Online Tutor For Base Programming (网页版)比较好,可以边看边练手(注,tutor网页版的“Producing Graphical Reports”不在考试范围内);还有The Little SAS Book (4th Edition)很经典;习题有SAS Base 50/70/123等;其他的如SAS Programming 1/2/3视情况而定,可看可不看吧。
- SAS Adv:同样推荐看SAS Online Tutor Advanced Programming(网页版),但是网页版没有“Optimizing SAS Programs”部分,需要看SAS Certification Prep Guide-Advanced Programming for SAS9(pdf版);习题有SAS Adv 50/63/130等。
- SAS Shortcuts
- 代码注释(comments),CTL+/
- 取消注释(comments),CTL+SHIFT+/
- 添加标记(bookmark),CTL+F2
- 括号 ( ) 匹配,CTL+]、CTL+[
- 按F9可以查看keys,并可根据自己喜好定义快捷键,如设置“ALT F3”为“clear log;clear output;wpgm;”,即清空日志和输出窗口、激活增强型编辑器。
- 在coding时可以通过“Tools—Add Abbreviation”定义缩写,如定义缩写为“pp”、缩写的插入文本为“proc print; run;”;并可以用“Tools—Keyboard Macros—Macros”对所定义的缩写进行编辑、修改。
- Others
ps:若一味的搜集资料,只会心浮气躁,还可能会被淹死,要自我调节好啊~ :-)
注:我是2010年12月在长沙考完的,题型大部分如SAS BASE 70和SAS ADV 63,网上流传的部分版本,其部分答案有误。
最后,欢迎指正和补充~
继续阅读