炼数成金 门户 商业智能 知识管理 查看内容

提高SAS运行效率的小技巧

2013-9-26 16:39| 发布者: 天空之城| 查看: 34768| 评论: 0|原作者: 数据海洋|来自: 数据海洋的博客

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

存储 大数据 SAS 字符

 利用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%';

鲜花

握手

雷人

路过

鸡蛋

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

热门文章

     

    GMT+8, 2018-11-14 06:08 , Processed in 0.136562 second(s), 22 queries .