[英]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.