8月 14, 2011

Posted in 分享 | 1 条评论

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)

继续阅读
4月 19, 2011

Posted in 分享 | 8 条评论

SAS中定义字符长度问题

前段时间翻看SASOR上的老帖子,在这个帖子ahuigeqkaiwei 讨论了下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’,作者还是又跳进陷阱了。

继续阅读
4月 1, 2011

Posted in 分享 | 8 条评论

SAS中dataset行列转换

之前saslist.net分享了一个SAS面经,其中提到对dataset进行行列转换有两种方法:1.proc transpose过程步;2.do循环+array statement。对于这个常见问题,姚志勇编写的《SAS编程与数据挖掘商业案例》中(P104-106)也有讲解,摘录如下:

数据集chapt6.fishdata如下

根据chapt6.fishdata将列转换成行:

1
2
3
4
proc transpose data=chapt6.fishdata out=chapt6.fishlength(rename=(col1=measurement));
	var length1-length4;
  	by location date;
run;

继续阅读
1月 27, 2011

Posted in 分享 | 10 条评论

关于SAS学习的一些整理和分享

第一篇日志,将自己学习SAS以来个人认为比较好的一些东西,和大家分享一下。也感谢各坛子上让我学习受益了很多的各位前辈~ :-)

  • SAS电子资料下载
    1. freebookspoteBooks & eLearning in avaxhome是个人感觉最好的两个的英文资料下载站,书籍资源丰富,免费,无需注册,SAS相关书籍也很多。
    2. 在SAS官网的SAS Documentation Example Code and Data上可以下载SAS官方出版的书籍、文档的随书代码和数据集。
    3. SAS的一些官方pdf文档(内容和help文档类似),如SAS 9.2 Language Reference Concepts,SAS 9.2 Macro Language Reference,直接在google上输入“filetype:pdf XXX”很方便可以下载。
    4. 国内下载站推荐爱问的共享资料版,资源比较丰富,且大部分不要积分也可以下载。
  • ps:若一味的搜集资料,只会心浮气躁,还可能会被淹死,要自我调节好啊~ :-)

  • SAS认证
    首先,个人感觉SAS认证考一下还是挺好的,准备过程中能比较系统的了解和学习一下SAS。当然,平时不用的话忘得非常快,编程能力也得靠自己多练,我这方面就太菜了。。。

    1. 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视情况而定,可看可不看吧。
    2. SAS Adv:同样推荐看SAS Online Tutor Advanced Programming(网页版),但是网页版没有“Optimizing SAS Programs”部分,需要看SAS Certification Prep Guide-Advanced Programming for SAS9(pdf版);习题有SAS Adv 50/63/130等。
  • 注:我是2010年12月在长沙考完的,题型大部分如SAS BASE 70和SAS ADV 63,网上流传的部分版本,其部分答案有误。

  • SAS Shortcuts
    1. 代码注释(comments),CTL+/
    2. 取消注释(comments),CTL+SHIFT+/
    3. 添加标记(bookmark),CTL+F2
    4. 括号 ( ) 匹配,CTL+]、CTL+[
    5. 按F9可以查看keys,并可根据自己喜好定义快捷键,如设置“ALT F3”为“clear log;clear output;wpgm;”,即清空日志和输出窗口、激活增强型编辑器。
    6. 在coding时可以通过“Tools—Add Abbreviation”定义缩写,如定义缩写为“pp”、缩写的插入文本为“proc print; run;”;并可以用“Tools—Keyboard Macros—Macros”对所定义的缩写进行编辑、修改。
  • Others
    1. 对于SAS出现中文乱码的情况,可以通过修改cfg文件来正确显示,参见这里
    2. 实用SAS编程技巧25招(胡江堂译注版),参见这里
    3. SAS_Dream的《SAS语言管窥》和《关于SAS的零碎印象》,saslist.net 里有。
    4. 我们是如何招聘SAS分析员的,参见这里
    5. 成为一个优秀的SAS分析员必备的五种能力,参见这里

最后,欢迎指正和补充~

继续阅读
返回顶部