楼主: 就喜欢马
3015 5

SAS宏变量与特殊字符调用出错 [推广有奖]

  • 2关注
  • 2粉丝

讲师

7%

还不是VIP/贵宾

-

威望
0
论坛币
50 个
通用积分
0.0019
学术水平
14 点
热心指数
15 点
信用等级
14 点
经验
12505 点
帖子
201
精华
0
在线时间
352 小时
注册时间
2014-11-2
最后登录
2015-9-17

楼主
就喜欢马 发表于 2015-1-22 17:26:24 |AI写论文
25论坛币
请问宏变量&i怎么调用才正确?
  1. %macro m;
  2. %do i=1 %to 2;
  3. proc tabulate data=z2;
  4. class bc001 rgender da057_&i_;
  5. table bc001*rgender,da057_&i_*(n pctn<da057_&i_>);
  6. run;
  7. %end;
  8. %mend m;
  9. %m;
复制代码


SAS日志如下:
QQ截图20150122172259.png

最佳答案

jl60156 查看完整内容

just add . after i as the following code %macro m; %do i=1 %to 2; proc tabulate data=z2; class bc001 rgender da057_&i._; table bc001*rgender,da057_&i._*(n pctn); run; %end; %mend m;
关键词:SAS宏 特殊字符 Tabulate Gender Table

回帖推荐

jl60156 发表于4楼  查看完整内容

just add . after i as the following code %macro m; %do i=1 %to 2; proc tabulate data=z2; class bc001 rgender da057_&i._; table bc001*rgender,da057_&i._*(n pctn); run; %end; %mend m;

沙发
jl60156 发表于 2015-1-22 17:26:25
just add . after i as the following code

%macro m;
%do i=1 %to 2;
proc tabulate data=z2;
class bc001 rgender da057_&i._;
table bc001*rgender,da057_&i._*(n pctn<da057_&i._>);
run;
%end;
%mend m;
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 100 热心帮助其他会员
就喜欢马 + 1 + 1 + 1 根据规定进行奖励

总评分: 论坛币 + 100  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
就喜欢马 发表于 2015-1-22 18:48:24
补充:变量系列为da057_1_ da057_2_ da057_3_ da057_4_...想将其变为da057_i_的循环变量,请问宏语句中怎样写&i呢?

板凳
sushe1527 发表于 2015-1-22 21:32:59
复制代码
如果确定变量相似但是不规律 也可用where name like 'da057%'
  1. data a;
  2. input bc001 $ rgender$ da057_1_ da057_2_ da057_ppp_;
  3. cards;
  4. a  x 1 2 9
  5. a  x 3 4 7
  6. b  y 8 5 6
  7. ;
  8. run;
  9. proc contents data=a out=b noprint ;run;
  10. %macro test;
  11. proc sql noprint;
  12. select count(name) into:count from b where name ne 'bc001' and 'rgender';
  13. select name into:var1-:var%left(&count) from b where name ne 'bc001' and 'rgender';
  14. quit;
  15. %do i=1 %to &count.;
  16. proc tabulate data=a;
  17. class bc001 rgender &&var&i.;
  18. table bc001*rgender,&&var&i.*(n pctn<&&var&i.>);
  19. run;
  20. %end;
  21. %mend;
  22. %test;
复制代码


已有 1 人评分论坛币 学术水平 热心指数 收起 理由
就喜欢马 + 5 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1   查看全部评分

报纸
就喜欢马 发表于 2015-1-23 06:55:33
jl60156 发表于 2015-1-22 17:26
just add . after i as the following code

%macro m;
谢谢!

地板
就喜欢马 发表于 2015-1-23 06:57:57
sushe1527 发表于 2015-1-22 21:32
如果确定变量相似但是不规律 也可用where name like 'da057%'
谢谢!但是jl60156更切我的问题

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-3 03:12