楼主: littleblack1984
1800 14

请教,关于宏变量引用的问题 [推广有奖]

  • 3关注
  • 0粉丝

大专生

63%

还不是VIP/贵宾

-

威望
0
论坛币
52 个
通用积分
1.7500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
54591 点
帖子
31
精华
0
在线时间
59 小时
注册时间
2010-10-13
最后登录
2024-4-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
想批量合并一个表格中的多个变量。写成程序如下,但是不能调用,请问应该如何处理,谢谢!
%macro median(var=);
data summary;
set result;
&var=cats('0a'x,&var_n,'0a'x,put(&var_mean, 6.1),"+",put(&var_stddev, 6.1),'0a'x,put(&varc_median, 6.1),"(",put(&var_qrange, 6.1),")");
keep treat &var;
run;
%mend;

%median(var=base_age base_bmi base_sbp base_sdp);


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Summary median Result Media treat median result treat 程序 如何

回帖推荐

孤单的我们 发表于10楼  查看完整内容

空格知道怎么用了
沙发
孤单的我们 发表于 2016-2-23 10:29:42 |只看作者 |坛友微信交流群
%median(var=base_age base_bmi base_sbp base_sdp);
应该分开调用
%median(var=base_age)
%median(var=base_bmi)
%median(var=base_sbp)
%median(var=base_sdp)

使用道具

藤椅
littleblack1984 发表于 2016-2-23 10:34:36 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-2-23 10:29
%median(var=base_age base_bmi base_sbp base_sdp);
应该分开调用
%median(var=base_age)
我看有的人是这么写的,说是需要给var指定一个顺序,但是不知道具体是如何指定,是这样吗?谢谢

使用道具

板凳
孤单的我们 发表于 2016-2-23 10:49:45 |只看作者 |坛友微信交流群
%median(var=base_age base_bmi base_sbp base_sdp)
这样是无法调用的。可以把里面的变量拆出来

使用道具

报纸
littleblack1984 发表于 2016-2-23 11:02:23 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-2-23 10:49
%median(var=base_age base_bmi base_sbp base_sdp)
这样是无法调用的。可以把里面的变量拆出来
哦,那用&&var&i的方法也不行吗,我找到一个参考,但是没写明白。链接如下
http://www2.sas.com/proceedings/sugi22/CODERS/PAPER77.PDF

使用道具

地板
孤单的我们 发表于 2016-2-23 11:07:11 |只看作者 |坛友微信交流群
给段参考例子
  1. %macro a(var=);
  2.         data a;
  3.         %do i=1 %to 4;
  4.                 %qscan(&var,&i,@)=&i;

  5.         %end;
  6. run;
  7. %mend;
  8. %a(var=%str(x@y@z@a))
复制代码

使用道具

7
littleblack1984 发表于 2016-2-23 11:30:13 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-2-23 11:07
给段参考例子
不好意思,不太明白接下来该如何引用

使用道具

8
孤单的我们 发表于 2016-2-24 16:48:51 |只看作者 |坛友微信交流群
littleblack1984 发表于 2016-2-23 11:30
不好意思,不太明白接下来该如何引用
因为要从&var中引出几个变量,'空格'分隔符不会设置,所以改成了'@'
  1. %macro median(var=);
  2. data summary;
  3. set result;
  4. %do i=1 %to 2;
  5. %let var&i=%qscan(&var,&i,@);
  6. &&var&i=cats('0a'x,%unquote(&&var&i.._n),'0a'x,put(%unquote(&&var&i.._mean), 6.1),
  7. "+",put(%unquote(&&var&i.._stddev), 6.1),'0a'x,put(%unquote(&&var&i..c_median), 6.1),
  8. "(",put(%unquote(&&var&i.._qrange), 6.1),")");
  9. keep treat &&var&i;
  10. run;
  11. %mend;

  12. %median(var=base_age@base_bmi@base_sbp@base_sdp);
复制代码

使用道具

9
littleblack1984 发表于 2016-2-25 03:22:11 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-2-24 16:48
因为要从&var中引出几个变量,'空格'分隔符不会设置,所以改成了'@'
万分感谢,学习一下。这段程序有不明白的地方可能还会请教您,谢谢

使用道具

10
孤单的我们 发表于 2016-2-25 09:44:01 |只看作者 |坛友微信交流群
littleblack1984 发表于 2016-2-25 03:22
万分感谢,学习一下。这段程序有不明白的地方可能还会请教您,谢谢
空格知道怎么用了
  1. %macro median(var=);
  2. data summary;
  3. set result;
  4. %do i=1 %to 4;
  5. %let var&i=%qscan(&var,&i);
  6. &&var&i=cats('0a'x,%unquote(&&var&i.._n),'0a'x,put(%unquote(&&var&i.._mean), 6.1),
  7. "+",put(%unquote(&&var&i.._stddev), 6.1),'0a'x,put(%unquote(&&var&i..c_median), 6.1),
  8. "(",put(%unquote(&&var&i.._qrange), 6.1),")");
  9. keep treat &&var&i;
  10. run;
  11. %mend;

  12. %median(var=base_age base_bmi base_sbp base_sdp);
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 06:18