SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 685|回复: 6
打印 上一主题 下一主题

如何将macro变量 aaa的值 传递到数据集中

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-4-20 12:57:59 | 只看该作者

如何将macro变量 aaa的值 传递到数据集中

%let aaa=1 2 3;

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

谢谢!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2009-4-20 13:13:26 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-4-20 13:22:08 | 只看该作者

Re: 如何将macro变量 aaa的值 传递到数据集中

如果是%let aaa=a b c 呢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-4-20 13:23:37 | 只看该作者

Re: 如何将macro变量 aaa的值 传递到数据集中

如果是%let 1 2 3 4等等 如何使程序通用化?
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
5#
发表于 2009-4-20 16:33:22 | 只看该作者

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]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-4-20 21:37:50 | 只看该作者

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
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
7#
发表于 2009-4-21 09:16:48 | 只看该作者

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]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 12:20 , Processed in 0.446551 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表