楼主: littleblack1984
2140 14

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

  • 3关注
  • 0粉丝

大专生

65%

还不是VIP/贵宾

-

威望
0
论坛币
50 个
通用积分
2.3853
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
54741 点
帖子
31
精华
0
在线时间
60 小时
注册时间
2010-10-13
最后登录
2024-6-17

楼主
littleblack1984 发表于 2016-2-23 10:24:33 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-5 17:44