2012年5月26日

「數字前補零」—以Data step和Macro為例(SAS Macro教學)


前幾天朋友又問了一個問題,朋友手上資料有一串數字,例如5、6、20等,希望能在數字前面補零,補成為005、006、020。因為他的資料很多,而且數字長度不一定,從1~9999都有可能,因此沒辦法用CAT系列函數將零組合到數字前面。
由這個問題,開始這篇第一個程式,建立範例資料(這是我的習慣,沒有資料我寫不出程式>"< )

data zero1_1;
   input num1;
   datalines;
   1
   25
   562
   9480
   X
  ;
proc print data=zero1_1;
run;

接下來不囉唆,直接使用Format就可以解決這個問題了,而這裡要使用的Format為Zw.d
data zero1_2;
   set zero1_1;
   format num1 z5.;
   run;
proc print data=zero1_2;
run;

結果為下圖
擷取
只要簡簡單單使用Z5.這個格式便可以處理了。Z後面接這個5是指數字的總長度,因此以第4個觀察值來說,原本的數字就有4位了,因此SAS會只補一個0了。

2012年3月2日

生日

又快到了這特殊的一天,自己內心暗暗提醒自己時間不多了。提醒自己應該去做更重要,更勇於面對自己的決定,這些決定只在心中徘徊著,卻永遠沒有行動過。

怎樣的決定?有幾個吧,來來回回的,在這十年間不斷的出現又消失。

『沒有其他人能為病人改變他的世界,如果他想要改變,就必須主動改變』-歐文.亞隆

如果把這一句話稍微推廣到我的世界,「沒有其他人能為我改變我的世界,如果我想要改變,就必須主動改變」。

其實我並無法確定是否因生日的來到而觸發這些敏感的開關。處於這個難得狀態,要好好珍惜,冷靜決定並行動。



『 日本諺語云:「知而不行,就是完全不知」』-歐文.亞隆

2012年1月29日

用SAS Macro表列九九乘法表 (SAS Macro入門教學)

表列出九九乘法表,我認為是很棒的迴圈入門,這個迴圈概念不論是用在SAS Data Step或SAS Macro都很適合。以下用SAS Macro做個簡單的說明。
這九九乘法程式就在下面了,有興趣的人可以直接丟到SAS執行看看,結果會在LOG視窗裡面喔!(在LOG,在LOG喔!!)
%macro A99;
%do A=1 %to 9;
    %put -----A=&A.-----;
    %do B=1 %to 9;
        %let C=&A X &B;
        %let D=%eval(&A * &B);
        %put &C = &D ;
    %end;
%end;
%mend A99;

%A99;


過年

這一個年和前一個年有什麼不同,今年是我有記憶以來,留在老家最多天的一次,或許是有比較舒適的房間了,或許是決定讓自己好好放空。

對我來說,能見到久久沒見到的三姑媽可能是最特別…最特別的事情了。總以為長大了,過了自己的生活,但我似乎忘了這位曾經花了數十年陪伴我長大的長輩。其實我沒有忘,每年都有機會遇到她,但自己也沒有很積極去做,總有一個藉口,算了下次再說吧。

下次再說吧,這是一個恐怖的想法,以為事情都會不變,腦海中浮出「下此再說吧」這種念頭,似乎是自己在逃避「死亡的恐懼」,正視死亡所發散出令人暈眩的光芒,或許會更珍惜與長輩相處的時間,與久沒相處的長輩見面或許沒有話題了,但那又如何?

2011年10月30日

熱情的展現

這幾天去台中國美館,在入口處出現了一畝稻田,水稻在微風中輕輕的搖擺,真是太美了..
這一畝稻田,在展區有介紹,是一群有心人士,為了要讓民眾與土地的關係更加密切,所做的一種裝置藝術,這個基金會也不斷強調台灣糧食依靠國外進口以及;廢耕或休耕面積不斷擴大下可能帶來的危險。
DSC09251