SAS中文论坛
标题:
能不能用宏语言批量读dbf文件?
[打印本页]
作者:
shiyiming
时间:
2008-2-17 09:33
标题:
能不能用宏语言批量读dbf文件?
大家帮帮忙吧,问题:一个文件下有许多个dbf文件,名字为sz60001.dbf,sz60002.dbf,sz60003.dbf
可能有些不连在一起的,每个文件名代表一个股票的代号,每一个dbf文件中是一个表,要提取第一列date时间和第五列股价
这两列的值一一对应,希望用date函数提取工作日的股价与时间,然后将各个表中的信息整合成如下表格
1990-1-1 1990-1-2 。。。。。(日期)
zj60001 19 16
zj60002 14 13(股价)
。
。
(股票号码)
现在有几个难点:1。如何用宏语句批量的读入一个文件目录下的所有dbf文件,2。如何将文件的文件名保存为数据集合名或变量名3如何将各个数据集合加工为表格4。有些股票会在某些日期停排,那么这一天的数据在dbf文件中就没有相当于少了一天的数据,能否用一个宏将数据整理干净,就是将日期统一(我的想法是用date函数先写出一个标准的时间数据集合,然后用其他数据集合和它并联)5。宏语句中的用proc import 用了地址‘地址’
作者:
shiyiming
时间:
2008-2-18 09:29
标题:
Re: 能不能用宏语言批量读dbf文件?
filename indata pipe 'dir D:\dbflist /b';
data file_list;
length fname $50.;
infile indata truncover; /* infile statement for file names */
input fname $50.; /* read the file names from the directory */
call symput ('num_files',_n_); /* store the record number in a macro variable */
run;
proc print data=file_list;
run;
%macro fileread;
%do j=1 %to &num_files;
data _null_;
set file_list;
if _n_=&j;
call symput ('filein',fname);
run;
data temp;
infile "D:\dbflist\&filein" firstobs=1 missover;
input var1 var2 $;
run;/*修改为输入单个dbf文件的code*/
/* assemble the individual files */
%if &j=1 %then %do;
data data_all;
set temp;
run;
%end;
%else %do;
data data_all;
set data_all temp;
run;
%end;
%end; /* end of do-loop with index j */
%mend fileread;
%fileread;
摘自sugi paper
作者:
shiyiming
时间:
2008-2-27 12:23
标题:
谢谢。
谢谢您的帮助。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2