在SAS中命名文件时更新variables
我对SAS有点新鲜。 我试图更新文件名通过循环写入Excel文件,但无法分配文件名。 这是我的代码:
%MACRO loop; %DO year1 = 1995 %TO 2008; DATA _NULL_; dailyret = catx(STRIP(&year1), '''/h1/usr11/angeli/finland/haz/phreg_dailyret_', '.csv'''); *to save output to excel; ODS TAGSETS.EXCELXP file= %QUOTE(dailyret) STYLE=minimal OPTIONS ( Orientation = 'landscape' FitToPage = 'yes' Pages_FitWidth = '1' Pages_FitHeight = '100' ); *a block of code that runs the program, irrelevant to my question; ods tagsets.excelxp close; RUN; %END; %MEND loop; %loop;
我已经尝试了许多变化,但每次我总是收到错误消息“错误:没有逻辑分配文件名DAILYRET”。
有没有什么办法可以做到这一点,所以我不需要在“file =”中添加实体引号,并且能够更新年份?
非常感谢!
-天使
要引用一个macrosvariables,用一个&
前缀。 请确保使用双引号字符"
来引用文件名,因为macros触发器不能在单引号内parsing。
您还可以select在macros名称后添加一个句点,以便parsing器知道macrosvariables名称结束的位置,并重新开始常规文本。 这意味着当你想附加一个以句点开头的扩展时,你需要有两个句点,因为第一个句点将被用来标记macrosvariables引用的结尾。
%MACRO loop; %DO year1 = 1995 %TO 2008; ODS TAGSETS.EXCELXP file= "/h1/usr11/angeli/finland/haz/phreg_dailyret_&year1..xml" STYLE=minimal OPTIONS ( Orientation = 'landscape' FitToPage = 'yes' Pages_FitWidth = '1' Pages_FitHeight = '100' ) ; *-------------------; *a block of code that runs the program, irrelevant to my question; *-------------------; ods tagsets.excelxp close; %END; %MEND loop;