精華區beta Statistics 關於我們 聯絡資訊
請問SAS可以ㄧ次讀很多檔案進去嗎?? 例如我有十個檔案(格式皆相同) A001 A002 A003....A010 我不想寫十遍Infile() 請問可以用其他方法讀嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.104.201.125
alias:用macro ... 07/16 18:54
shinha70:請問可以寫詳細點嗎?我也遇到這個問題>"< 謝謝 07/17 00:05
cug:*.* 07/18 08:55
> -------------------------------------------------------------------------- < 作者: c6966 (窮人家的小孩) 看板: Statistics 標題: Re: [問題] SAS讀檔?? 時間: Tue Jul 18 09:44:28 2006 ※ 引述《hopper123 (clue)》之銘言: : 請問SAS可以ㄧ次讀很多檔案進去嗎?? : 例如我有十個檔案(格式皆相同) A001 A002 A003....A010 : 我不想寫十遍Infile() : 請問可以用其他方法讀嗎?? %macro(a,b); %do i = 1 %to 10; data &b; infile 'c:\&a.txt'; %end; %mend; 大概是這樣吧 手邊沒sas 沒辦法確實測試 不過曾經寫過大概是這樣 還是要有實際例子 哈哈 僅供參考 > -------------------------------------------------------------------------- < 作者: alias (希望) 看板: Statistics 標題: Re: [問題] SAS讀檔?? 時間: Tue Jul 18 21:17:17 2006 ※ 引述《hopper123 (clue)》之銘言: : 請問SAS可以ㄧ次讀很多檔案進去嗎?? : 例如我有十個檔案(格式皆相同) A001 A002 A003....A010 : 我不想寫十遍Infile() : 請問可以用其他方法讀嗎?? EX: 假設要讀的檔案名為 A001 A002 A003...A009 且有副檔名 .dat (即完整檔名為A001.dat) %MACRO aa; %DO i=1 %TO 9; DATA a00&i; INFILE " c:\a00&i..dat"; INPUT (你的資料格式); RUN ; %END; %MEND; %aa; 大寫字母部份是必要的 小寫字母可以依自己需求變化 請注意黃色的符號,其中兩個點的地方: 第一個點是連接符號的意思 第二個點才是點 這有經過測試了, 如有錯誤還煩請訂正 這是我常用的方法, 當然我相信有其他更好的 但這樣缺點是 那個A010 不方便用 因為按上述程式 若i設到10 則檔名會變成 A0010 會找不到檔案讀的 (所以我才說會有其他更好的嘛 ^^) > -------------------------------------------------------------------------- < 發信人: yhliu.bbs@bbs.wretch.cc (老怪物), 看板: Statistics 標 題: Re: [問題] SAS讀檔?? 發信站: 無名小站 (Fri Jul 21 18:16:16 2006) 轉信站: ptt!Group.NCTU!grouppost!Group.NCTU!wretch ※ 引述《alias.bbs@ptt.cc (希望)》之銘言: > ※ 引述《hopper123 (clue)》之銘言: > : 請問SAS可以ㄧ次讀很多檔案進去嗎?? > : 例如我有十個檔案(格式皆相同) A001 A002 A003....A010 > : 我不想寫十遍Infile() > : 請問可以用其他方法讀嗎?? *Macro PADZERO 在數字前補0, 使其長度固定. %Macro PADZERO(number,digit); %LET _l=%LENGTH(&&&number); %IF &_l<&digit %THEN %DO _j=&_l+1 %TO &digit; %LET &number=0&&&number; %END; %MEND; *以下取 alias 的 Macro 做修改. %Macro RFILES(prefix,begno,endno,digits=0); %IF &digits<1 %THEN %LET digits=%LENGTH(&endno); %DO i=&begno %TO &endno; %PADZERO(&i,&digits); %LET _fname=&prefix&i; DATA &_fname; INFILE "&Path&_fname..&Ext"; * Path 是檔案路徑, Ext 為延伸檔名, 呼叫此 macro * 前設定之. 或如 alias 原 macro, 用固定字串亦可. /* (put your statements for data processing) */ RUN; %END; %MEND; 原問之讀檔: %LET Path=C:\; %LET Ext=dat; %RFILES(A,1,10,digits=3) 未試. 有無錯誤不知.