SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1012|回复: 1
打印 上一主题 下一主题

帮忙看一下错在哪里?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2012-8-29 04:46:50 | 只看该作者

帮忙看一下错在哪里?

data a;
input x$ @@;
cards;
a aa a a bb bb bb ccc cc cc cc
;
run;
proc sql noprint;
select count(distinct x) into :n from a;
select distinct x into :vx1-:vx%sysfunc(strip(&n.)) from a;
quit;
%put n=&n.  vx=&&vx%sysfunc(strip(&n.)) ;

结果如下:
n=       5     vx=&vx5
我发现vx=&vx5没有被解释,这是为何,如何改?
谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2012-8-29 09:48:30 | 只看该作者

Re: 帮忙看一下错在哪里?

上面sql程序没有问题,已经生成宏变量vx1-vx5,只需把%put变成:
%let m=%sysfunc(strip(&n.));
%put vx=&&vx&m ;
就可以看到你想要的东西了。
这里我不是很清楚,貌似%sysfunc是在解析符&之后运行(因为code顺序?),这样SAS就无法识别vx这个宏变量了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-3 08:53 , Processed in 0.067037 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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