只是爲了好玩讓我們假設你想這樣做,反正 - 最安全的事情做的僅僅是創建數據集爲輸出的副本...
此代碼假定您的變量名命名像w1_sales和輸出名稱將被重命名爲03JAN2013_sale或類似的東西。
data newDataSet;
set oldDataSet;
%MACRO rename_vars(mdataset,year);
data &mdataset.;
set &mdataset.;
%do i = 1 %to 53;
%let weekStartDate = %sysfunc(intnx('week&i','01jan&year.'d,0)); %*returns the starting day of week(i) uses sunday as starting date. If you want monday use 0.1 as last param;
%let weekstartDateFormatted = %sysfunc(putn(&weekStartDate.,DATE.)) %*formats into ddMONyyy. substitute whatever format you want;
rename w&i._Sale = &weekstartDateFormatted ._SALES;
%end;
run;
%MEND rename_vars;
%rename_vars(newDataSet,2013);
我現在沒有時間來測試這個權利,所以sommebody讓我知道如果我搞砸了某個地方。這應該至少讓你去。或者你可以發送我或發佈一些代碼來讀取一個小樣本數據集(顯然,如果這是可能的,而不必共享一些專有信息,你可能必須將它泛化)與這樣的變量,我會調試它。
我理解了所有的單詞,但放在一起他們沒有意義。發佈數據的「proc print」以及你想要的輸出結果。 –
你確定你的意思是變量而不是變量的內容嗎?由於不尊重V7變量名限制當然不是一個好主意。 – mvherweg
那麼我不想重命名變量的內容。只是變量的名稱 – user1946152