簡體   English   中英

循環定義SAS DATA步驟中的變量

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

有人知道如何使用某種循環技術來壓縮此長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;

非常感謝你
馬可

用循環替換每個系列的find#變量。 此外,您還忘記了原始代碼塊中的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