我是宏观世界的新手,并试图找出何时使用%do%end vs do end in sas。除了在datastep之外使用%do%end之外,还有其他复杂性。任何帮助表示赞赏。
答案 0 :(得分:3)
do-end
是数据步骤语法,只能在数据步骤中执行。这主要用于每行多次执行相同的逻辑,例如,与数组。
do-end
也可以垂直使用'在输出行之前从输入数据源一次读取多行(由于模糊原因而知道为DOW-loop)。
%do-%end
是宏语法,仅在宏定义中有效,即在%macro yourmacroname;
和相应的%mend;
语句之间。您可以使用宏为多个单独的数据步骤或过程生成代码,或在单个数据步骤中生成重复代码。
如果您在数据步骤中生成重复代码,并且您可以选择使用%do-%end
或do-end
,那么坚持{ {1}}并避免使用宏,因为这会给代码增加额外的复杂性。
答案 1 :(得分:0)
如果您想在数据步骤(水平方向,即跨行)中执行此操作,请使用do-end。如果你想在数据步骤之外(即一遍又一遍地执行一个或多个过程),那么使用%do-%end。
虽然有时您可以通过任何给定的灵活约束来逃避,但上述内容应该指导您开始使用。