本人sas初学者,遇到一个难题,请求高手指点!问题是这样的,我想要导入txt,| 为分隔符的文件,文件里面的列的数量和名字不确定,为了方便对数据的处理,我打算把所有的列都设成相同的格式 字符型200; 如下,不知道为什么 循环总是有问题。
txt file 数据举例(第一行是header):
table1|table2|table3|table4|num
a|b|c|d|3
a|b|c|d|4
a|b|c|d|5
a|b|c|d|6
%let file=C:\Documents and Settings\Administrator\桌面\result_201105_201304.txt
data aa;
INFILE "&file "
MISSOVER
DSD lrecl=32767
firstobs=1
obs=1
;
INPUT a : 美元符号32767. ;
run;
proc sql;
select max(count(a,'|'))+1 into:num
from aa;
quit;
%macro group(n);
data out1;
set aa;
%do i=1 %to &n;
var&i=scan(a,&i,'|');
%end;
run;
%mend;
%group(&num);
--------------------------------------------------
以上是博客上学来的,把列名提取出来,后面是我有问题的code
--------------------------------------------------
* create 宏变量,每个宏变量对应一个header的name
%macro var(n);
%do i=1 %to &n;
select var&n from out1
into: var&n;
%put var&n=var&n;
%end;
%mend;
%var(&num);
data out1 ;
infile "&file" delimiter = '|' MISSOVER DSD lrecl=32767 firstobs=2 ;
do i= 1 to #
informat &&var&i 美元符号200.;;
end;
do i= 1 to #
format &&var&i 美元符号200.;;
end;
input
do i= 1 to #
&&var&i 美元符号;
end;
---------------------------------------------------
非常感谢!