专栏首页老Z的博客创建SAS Format的几种方法

创建SAS Format的几种方法

不管是做AD还是TFL,我们经常会碰到要创建Format。当Format中条目不多时我们可以直接用PROC FORMAT来创建,但是当条目很多时,这种方法就不方便了。下面详细介绍其他几种方法:

设有数据集如下,假设要创建START为AVISITN,LABEL为AVISIT的Format:

/*方法1: CALL EXECUTE*/ 
data _null_;     
    set demo end=eof;     
    if _n_=1 then call execute('proc format; value vs1t');     
    call execute(cats(AVISITN)||' = '||quote(cats(AVISIT)));     
    if eof then call execute('; run;'); 
run;  
  • 通过宏变量创建
/*方法2: macro variable*/ 
proc sql noprint;     
    select catx(' = ', cats(AVISITN), quote(cats(AVISIT))) into :fmtlst separated by ' '           from demo         
        order by AVISITN; 
quit;  

proc format;     
    value vs2t &fmtlst; 
run;
/*方法3: CNTLIN= option*/ 
proc sql;     
    create table fmt as         
        select distinct 'vs3t' as FMTNAME , AVISITN as START , cats(AVISIT) as label                   from demo         
            order by AVISITN;
quit;  

proc format library=work cntlin=fmt; 
run;
/*方法4: FILENAME*/ 
proc sql;     
    create table fmt as         
        select distinct AVISITN, quote(cats(AVISIT)) as AVISIT 
        from demo 
        order by AVISITN;
quit;  

/*将CODE输出到一个临时文件*/ 
filename code temp; 
data _null_;     
    file code;     
    set fmt;     
    if _n_=1 then put +4 'value vs4t';     
    put +14 AVISITN ' = ' AVISIT; 
run;  

proc format;
    %inc code / source2;
    ;
run;

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • .sas7bdat文件与.xpt文件批量转换

    当我们拿到的原始数据为.xpt格式时,就需要批量转换成.sas7bdat文件以便后续处理,而当我们要准备SDTM Package时,我们又要将.sas7bdat...

    专业余码农
  • SAS获取某目录下某种类型文件最后修改时间

    今天介绍一下用FILENAME PIPE来获取某一目录下某种类型文件的最后修改时间。比如要获取程序所在目录下SAS数据集的最后修改时间,代码如下:

    专业余码农
  • SAS统计一篇文章中各字母的出现频率

    今天偶然看到一个古老的帖子:统计一篇文章中各字母的出现的次数和频率。先说统计单词的问题。最直接的方法应该是将文章按单词分成多行,每行一个单词,再用PROC FR...

    专业余码农
  • Go 2017 调查报告

    Programming background ? Go usage ? Development and deployment ?

    程序员的酒和故事
  • Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a hei...

    Tyan
  • 一起搞懂PHP的错误和异常(二)

    上回文章中我们讲到了错误是编译和语法运行时会出现的,它们与逻辑无关,是程序员在码代码时不应该出现的,也就是说,这些错误应该是尽量避免带到线上环境的,他们不能通过...

    硬核项目经理
  • leetcode-137-Single Number II-第一种解法

    chenjx85
  • 程序员逻辑测试题(6)

    国家最富,不代表每个人都是富人,因为财富有可能掌握在少数人手中,而其它人是穷人,所以要得到每个人都是富人的结论,还要做一些假设(也就是隐藏理由),显然D是有效的...

    剑走天涯
  • 为什么很多人吐槽谭浩强的C语言程序设计?

    这个观点在网络上已经论战了很长时间,出现这种情况还是历史遗留问题,老谭出的C语言教材几乎是国内的第一版,由于中英翻译问题或者对编程文化理解的差异性导致出来的书多...

    程序员互动联盟
  • 线程之状态和创建方式

    线程是计算机进行运算调用的最小单元,包含在进程内。例如:一个微信在计算机后台属于一个进程,发送一句话是由一个线程完成的,同时要保存聊天的内容,是由另一个线程完成...

    OPice

扫码关注云+社区

领取腾讯云代金券