公告

[公告]
2014/01/17
由於已經是faculty的關係,不太有足夠時間寫部落格。因此更新的速度會相當緩慢。再加上近幾年來SAS GLOBAL FORUM沒有出現讓我覺得驚艷的技術文件,所以能分享的文章相對也減少許多。若有人推薦值得分享的SAS技術文件,請利用『問題討論區』告知。

2013/07/19
臉書留言板的功能因為有不明原因故障,因此特此移除。而intensedebate的留言板因管理不易,也一併移除。目前已經開啟內建的 G+ 留言系統,所以請有需要留言的朋友,可直接至『問題討論區』裡面留言。


2011年5月28日 星期六

Automagically Copying and Pasting Variable Names

原文載點:http://support.sas.com/resources/papers/proceedings10/046-2010.pdf

如果使用者從第三處拿到一筆資料,想要建立coding book或目錄,或者需要寫新的程式必且在keep或drop指令輸入大量變數名稱,因而需要大量複製和貼上變數名稱的話,有什麼比較好的方法呢?Arthur S. Tabachneck 等人提供了一個方法讓使用者能夠一次複製且貼上全部的變數名稱。

首先,執行下面這段程式碼:
FILENAME _cb CLIPBRD;
DATA _NULL_;
   WINDOW DSN rows=8 columns=80
   irow=1  icolumn=2 color=black
   #2  @3  'Enter 1 or 2 level data set name: ' 
            color=gray dsn $41.  required=yes
            attr=underline       color=yellow;
   DISPLAY DSN blank;
   FILE _cb;
   length name $32;
   do dsid = open(dsn,'I') while(dsid ne 0);
     do i = 1 to attrn(dsid,'NVARS');
       name = varname(dsid,i);
       put name @;
     end;
     dsid = close(dsid);
   end;
RUN;
FILENAME _cb CLEAR;
切記裡面一個指令都不用改,執行完後 SAS 裡面會跳出一個黑色的視窗,如下所示:

裡面有一個空行,是要你輸入資料所在的 library 名稱還有資料本身名稱,如:「Orz.wahaha」,亦即表示你要複製 Orz library 裡面的 wahaha 資料內的所有變數名稱。如果沒有指定 library,則程式會自行去 Work library 裡面搜尋。輸入好後按 Enter,要進行最後"關掉DSN視窗"的動作,這時程式才會將你指定的資料集裡面的所有變數名稱複製好,然後你就可以用 Ctrl + v 的熱鍵把複製好的變數名稱任意地貼到任何地方或任何軟體裡面。

CONTACT INFORMATION 
Your comments and questions are valued and encouraged.  Contact the authors at:
Arthur Tabachneck, Ph.D. Randy Herbison,
Director, Data Management Senior Systems Analyst
Insurance Bureau of Canada Westat
2235 Sheppard Ave. East 1650 Research Boulevard
Toronto, ON L3T 5K9 Canada Rockville, MD 20850
E-mail: atabachneck@ibc.ca E-mail: RandyHerbison@westat.com
John King Andrew Clapson
Ouachita Clinical Data Services, Inc. Ottawa, ON Canada
Mount Ida, AR E-mail: andy_clapson@hotmail.com
ouachitaclinicaldataservices@gmail.com
Roger DeAngelis Tom Abernathy
CompuCraft Inc Pfizer, Inc.
1770 Via Petirrojo Apt A 235 E. 42nd Street
Newbury Park CA 91320 New York, NY 1001
E-mail: xlr82sas@aol.com E-mail: tom.abernathy@pfizer.com
CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; height:200px; // for IE6 line-height: 1.2em; }