简体   繁体   English

循环定义SAS DATA步骤中的变量

[英]Defining variables in SAS DATA step with a loop

Does anybody knows how to compress this long SAS code with some sort of looping technique? 有人知道如何使用某种循环技术来压缩此长SAS代码吗?

DATA CDS; SET CDS; 
retain find131 find132 find133 find134 find135 find136 find137 find138 find139 find140;
if _n_=1
    THEN DO;
    find131 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find132 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find133 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find134 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find135 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find136 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find137 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find138 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find139 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    find140 = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
    END;

Thank you very much 非常感谢你
Marco 马可

Replace each series of find# variables with a loop. 用循环替换每个系列的find#变量。 Also, you forgot a run statement in your original code block. 此外,您还忘记了原始代码块中的run语句。

%macro simplify;

    DATA CDS;
        SET CDS; 
        retain %do i = 131 %to 140; find&i. %end;;
        if _n_=1 THEN DO;
            %do i = 131 %to 140;
                find&i. = prxPARSE('/\d\d\d\d\d\d\d\.\d\d/');
            %end;
        END;
    RUN;

%mend simplify;

%simplify;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM