2014年3月24日 星期一

SAS 9.3 64位元與 Win 7 64位元,無法讀取匯入 Excel(xls, xlsx)或 Access (mdb, accdb)


問題描述:
作業系統環境是 Win7 64 與 SAS 9.3 64位元,Office 為 2003 版的,使用以下方式讀取或匯出 Excel 或Access的檔案
  • Import Wizard
  • Proc import 或Proc export
    • PROC IMPORT DBMS=EXCEL 
                  DATAFILE= "\directory\filename.xls" 
                 OUT= WORK.cdc REPLACE;
           SHEET="Sheet1";
           GETNAMES=YES;
           MIXED=NO;
           SCANTEXT=YES;
           USEDATE=YES;
           SCANTIME=YES;
      RUN;
  • Libname
    • libname myref  "\directory\filename.xls";
會失敗,而Log檔訊息為
ERROR: Connect: 類別未登錄
ERROR: Error in the LIBNAME statement.
ERROR: Error trying to establish connection: Unable to create Data Source.: Class not registered
ERROR: Error in the LIBNAME statement.
此狀況常見於剛換系統,以前寫的sas碼都變得無法執行。

解決方式:
  • 換回 SAS 9.3 的 32位版,但工程較大 ,但也一樣要安裝SAS PC Files Server
  • 使用SAS PC 檔案伺服器(SAS PC Files Server)來讀取檔案,建議SAS 64位元用戶一定要裝。
  1. 安裝方式請參考 SAS® 9.3 FOUNDATION for Windows 安裝導引
  2. 安裝過程中,一定要選擇讓 SAS PC Files Server隨windosw 自行啟動,否則後續每次叫檔案要自行到「所有程式」手動啟動
  3. 讀檔或匯出檔案的程式碼要稍微改如下
  4. libname myref pcfiles server="localhost" 
    port=9621
    path="\directory\filename.xls";
    proc import dbms=excelcs
          datafile='\directory\filename.xls' 
          out=sas-data-output-filename replace;
       sheet='sheet-name';
       server="localhost";
       port=9621 ;
    run;
    如此,只要更動少部分的程式即可!
      如果有進一步問題,可參考:http://support.sas.com/kb/33/228.html
    或是 http://support.sas.com/kb/43/802.html

2014年2月22日 星期六

準備Base programming 筆記_Day 1

雖然已有3、4 年的SAS經驗,但不希望浪費 Base programming for SAS 那近 六張小朋友的報名費,為求謹慎,我依照  SAS Certification Prep Guide: Base Programming for SAS 9, Third Edition 這本書,開始按步就班進行準備,但又因為不想在書裡留下任何記號,就決定把筆記留在blogger裡,以供後續參考。

期許自己每晚能定時 K書,別估負那貴松松的書籍費和報名費 ( 搭廉航去日本爽爽玩的來回機票就這般沒了~~~ T_T 越想越心痛 )。

====================================================================

程式以 DATA 或 Proc 為一組,執行上遇到DATA或Proc時,會把已讀入的指令執行完畢,再去讀新的一組DATA 或 Proc指令。

Two-level 資料檔名稱 ( Libname.filename )
  • 開頭,letter (A~Z)大小寫不拘,或者 underscore (_)
  • 之後,任意 letter underscore 或數字。
  • 長度,
    • Libname :最多8碼
    • Filename:長度最多32碼。
Missing Value
數值變項為 (.),文字變項為單純的空白()  。

變項的 Format ,用於 Display
作用規則 SAS data value --> sas format --> Formatted sas data value
例如:把 數值的5678,用DOLLAR8.2 format,就變成以 $5,678.00 呈現。
8.2 就是原自 w.d 的寫法,w是總長度,d是含有小數幾位。

變項的 Informat ,用於 Read data
作用規則 Data value --> sas informat --> sas data value
例如, 原始外部資料是 $5,678.00 ,指定以Comma 10. 去讀,電腦最終以5678.00 轉入SAS,去除 $ 和 ,。

有關 format 和 informat,一個顯示資料,一個讀取資料,後續應該會有更細的介紹。

一個(;)表示一個statement,下例有5個(;),是5個statement。(@_@ 還真的沒有仔細算過)
proc print data=new.prodsale
label noprint;
var x y z ; where state='NC';
label state='Name of State'; run;


附註:除上述所列,還有一些很基本的軟體環境,一般user 都已知道,速速往後讀吧。

2013年8月7日 星期三

Kindle 3 的快捷鍵

參考
http://blog.the-ebook-reader.com/2010/08/29/kindle-3-shortcuts-hot-keys-and-hidden-features/

記錄幾個有趣的功能。

當畫面在「首頁」時的操作按鍵組合。
  • alt + shift + G:Capture screen,截取螢幕畫面,會以 GIF 格式儲存在 documents 資料夾中,並非在 picture裡,須連結電腦才能觀看。
  • shift + alt + M:呼叫踩地雷遊戲。按M就是標記有雷,按R是重新開始,按方向鍵移動,方向鍵中間則是打開格子 (格子下有雷就爆了)

我贏了 XDD 
按G 可以換五子棋遊戲,與電腦對戰,殺時間用。
我又贏了 XDD
  • alt + G:一般情況下為螢幕顯示更新,在踩地雷遊戲中按此快捷鍵則可叫出五子棋遊戲。另也可快按"Menu"鍵兩下更新螢幕顯示。

  • alt + 鍵盤最上方的整排英文字母:Q-O 即是數字鍵 1-9 ,alt+P 則為0。