[程式] SAS利用巨集水平合併多個檔

看板Statistics作者 (雨兒)時間11年前 (2015/01/13 12:35), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
-------------------------------------------------------------------- [軟體程式類別]: SAS9.3 [程式問題]: 資料處理 [軟體熟悉度]: 中(3個月到1年) [問題敘述]: 目前我有五年份的檔案(DBF檔),數量大約一千多個,每個檔案以日期命名, 因為不是每一天都有檔案所以數字並不連續。 每一個檔案內都只有一個變數RASTERVALU 例如一月份檔名:TX2007JAN1、TX2007JAN3、TX2007JAN11、TX2007JAN15... 我想用macro將所有的檔案讀入,修改變數名稱(改為日期)再合併。 由於檔名的數字不連續,所以結果會將原本沒有的檔案也建立在資料庫, 使用merge在合併時就發生沒有讀取到變數而發生錯誤不能合併。 在版上看過有人寫 PROC DATASET 的巨集來做, 雖然之後試了force option有強制併在一起但是除了共同欄位外其餘都成了缺失值。 所有程式語法如下。 因為我第一次試寫macro語法,估勾很久還是不知道如何解決,還請版友指教。 謝謝大家^^ [程式範例]: %macro import (n); %Do i=1 %to &n; PROC IMPORT OUT= WORK.temp2007JAN&i DATAFILE= "D:\test\ck0701&i" DBMS=DBF REPLACE; GETDELETED=NO; RUN; data TX2007JAN&i; set temp2007JAN&i; keep post_code RASTERVALU; if RASTERVALU>0 then TX2007JAN&i=RASTERVALU; run; data A.TX2007JAN&i; set TX2007JAN&i; TX2007JAN&i=RASTERVALU; drop RASTERVALU; run; %end; %mend; %import (28); ------------------------------------------------------- %macro merge ; PROC DATASETS library=A; RUN; %do i=1 %to 28; proc sort data=TX2007JAN&i; by post_code; PROC DATASETS; APPEND out =tm data=TX2007JAN&i force; RUN; %end; %mend merge ; %merge by post_code; ----------------------------------------------------------------------------- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.128.68.1 ※ 文章網址: https://www.ptt.cc/bbs/Statistics/M.1421123717.A.877.html
文章代碼(AID): #1KjA25Xt (Statistics)
討論串 (同標題文章)
文章代碼(AID): #1KjA25Xt (Statistics)