统计211

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2800|回复: 0
打印 上一主题 下一主题

提高SAS运行效率的小技巧

[复制链接]
跳转到指定楼层
1
发表于 2013-10-30 13:56:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

利用SAS处理一个大数据量的时候,使用一些小技巧可以很好的提高SAS的效率,如果你对SAS中的DATA的步的原理更了解,那理解这些技巧是很容易的:


一、过滤数据


1)当你作数据预处理的时候,你可以会从一个很大的数据集中读入一些数,形成子集。


则这个时候使用IF的效率就不如WHERE了。为什么?因为IF的作用是把数据读入PDV后再作判断,而WHERE在数据读入PDV之前就作判断。


2)在PROC过程中的直接使用WHERE 条件来过滤数据。


3)对于从外部读入的数据,如果需要过滤,则直接在这个变量读入过程中加上相应的条件。


input x; if x>10; input y; 当X不满足条件时候,则不再读入后续数据。


二、生成数据


1)如果不要生成最终数据集,只是处理一个过程。建立多使用:data _null_;


2)合并二个数据集的时候,如果二个数据集相关,建议使用proc apend 过程;


data one;


set one two;


run;


---方法二只是读入TWO的数据并入到ONE中。


proc append base = one data = two;


run;


3)在SET 后面直接过滤不需要的变量(set test(keep=var1);) 可以避免不需要的变量进入PDV


4)建立索引。如果读入大数据量的时候,可以在读入的时候即为数据集加上索引,方便后续的高效访问(data test (index=));)


5)预编译


对于常用的生成数据过程,可以利用PGM的过程预编译好,存储起来,要使用时候,直接调用。可以节约编译器时间。


例如:


DATA one2/ pgm = progname ;


SET one;


RUN ;


DATA pgm= progname ;


RUN;


三、模糊匹配


1) is missing/is null 用于检查字符变量是否为空或者数值变量是否缺失。


2)% 代表0个以上的任意个数的字符。


3)_(下划线)仅代表一个任意字符。


4)contains ?是否包含某个字符 x ? 'afd' 相当于 x like '�d%';

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


免责声明|关于我们|小黑屋|联系我们|赞助我们|统计211 ( 闽ICP备09019626号  

GMT+8, 2025-5-2 21:32 , Processed in 0.077728 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表