命名文件更新一個變量,我有點新的SAS。我試圖通過循環更新文件名以寫入excel文件,但無法分配文件名。這裏是我的代碼:在SAS
%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沒有邏輯分配」。
有什麼辦法,我可以做到這一點,這樣我就不必把物理報價在符合「文件=」和能夠更新的一年?
非常感謝!
-Angel
DATA步驟的目的是什麼?此外,您似乎還有很多全球聲明(ODS,OPTIONS)混合到數據步驟的中間。 – Tom
DATA步驟的目的是將連接字符串分配給變量「dailyret」,這樣我就可以將變量「dailyret」分配給文件名。我曾嘗試直接分配 「CATX(STRIP(YEAR1), '' '/ H1/usr11 /安傑利/芬蘭/ HAZ/phreg_dailyret_', '的.csv ''')」 的文件名,但它給了我一個錯誤好。老實說,因爲我對SAS很新,我不確定ODS和OPTIONS究竟做什麼,但是當我搜索如何創建一個文件來優化時,那是我找到的代碼。有什麼辦法可以更新MACRO變量year1並將其分配給文件名? – Angel
對於這個簡單的問題,只需將宏變量引用放在你想要的地方。對於更復雜的問題,您可能會運行一個數據_null_步驟來生成一個宏變量(使用CALL SYMPUTX()函數),然後您可以在數據步驟結束後使用它來生成其他代碼,如ODS語句。 – Tom