SAS中文论坛

标题: 如何将macro变量 aaa的值 传递到数据集中 [打印本页]

作者: shiyiming    时间: 2009-4-20 12:57
标题: 如何将macro变量 aaa的值 传递到数据集中
%let aaa=1 2 3;

如何将macro变量 aaa的值 传递到数据集中;
want :
group
1
2
3

谢谢!
作者: Qiong    时间: 2009-4-20 13:13
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
[code:3166ngf6]%let aaa= 1 2 3 ;

data c;
array temp(3) _temporary_ (&aaa);
do i=1 to dim(temp);
group=temp(i);
output;
end;
;
drop i;
run;[/code:3166ngf6]
作者: shiyiming    时间: 2009-4-20 13:22
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
如果是%let aaa=a b c 呢
作者: shiyiming    时间: 2009-4-20 13:23
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
如果是%let 1 2 3 4等等 如何使程序通用化?
作者: Qiong    时间: 2009-4-20 16:33
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
[code:1xk4otq1]%let aaa= 1 2 3 4 5 7 1 12;

data c;
array temp(0:1000)  (&aaa);
do until(missing(temp(i)) );
group=temp(i);
i+1;
output;
end;
;
keep group ;
run;[/code:1xk4otq1]
作者: shiyiming    时间: 2009-4-20 21:37
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
%let aaa=1 2 3 b b ccc we4356;
%macro AssignMcr;
%local i;
%let i=1;

data tblAssign;
length group $20.;*a safe length to assure read all components;
%do%while(%scan(&aaa,&i) ne %str( ));
%let nTransit = %scan(&aaa,&i);
group = "&nTransit";*group is a char;
output;
%let i=%eval(&i+1);
%end;
run;

%mend AssignMcr;

%AssignMcr

;


**** frist, i have to say that vicky1020 gave a very good answer and it is more effcient. my program is just for fun. if it works, the program can read char or numeric;if you need group being a numeric, just force it to convert and so on.
Thanks
作者: Qiong    时间: 2009-4-21 09:16
标题: Re: 如何将macro变量 aaa的值 传递到数据集中
昨天lz还在问我char形式怎么处理,就有人帮忙了,赫赫。ls的同学考虑真周到。
[code:30go689v]

%let bb=a bc cd efg;

proc sql;
create table c(group char);
quit;
%macro a;
%let i=1;
%do %until (%scan(&bb,&i)=);
%let t=%scan(&bb,&i);
proc sql;
insert into c values("&t.");
quit;
%let i=&i+1;
%end;
%mend;
%a;
[/code:30go689v]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2