楼主: pinseng
1654 4

[原创博文] 请教一个sas macro的问题 [推广有奖]

  • 2关注
  • 3粉丝

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
395 个
通用积分
26.2433
学术水平
5 点
热心指数
8 点
信用等级
6 点
经验
2075 点
帖子
135
精华
0
在线时间
116 小时
注册时间
2006-11-11
最后登录
2016-6-23

楼主
pinseng 发表于 2010-12-26 13:34:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
下面这组data,打算对列求和。 用data step可以如下做,现在打算把
   sum1+summer1;
   sum2+summer2;
   sum3+summer3;
   sum4+summer4;
换成用macro来改写,应该怎么写?  折腾了好久都没弄出来,求教。
我试着用array可以做,macro总是说有问题。谁能帮我写一下code? 谢谢

data wide;
   input name $ summer1-summer4;
   cards;
   a 1 2 3 4
   b 1 2 3 4
   c 1 2 3 4
;

data sum_data;
   set wide end=lastobs;
   sum1+summer1;
   sum2+summer2;
   sum3+summer3;
   sum4+summer4;
   keep sum1-sum4;
   if lastobs then output;
run;

proc print data=sum_data;
run;
二维码

扫码加我 拉你入群

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

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

关键词:Macro acr CRO Mac Data step

沙发
soporaeternus 发表于 2010-12-26 21:37:20
  1. %do i=1 %to 4 %by 1;sum&i.+summer&i;%end;
复制代码
替换你的
sum1+summer1;
   sum2+summer2;
   sum3+summer3;
   sum4+summer4;
Let them be hard, but never unjust

藤椅
pinseng 发表于 2010-12-31 08:03:10
谢谢  确实是的

板凳
elek.me 发表于 2010-12-31 09:00:12
没必要用宏,数组即可:
  1. data wide;
  2.         input name $ summer1-summer4;
  3. cards;
  4. a 1 2 3 4
  5. b 1 2 3 4
  6. c 1 2 3 4
  7. ;

  8. data want;
  9.         set wide end=eof;
  10.         array sum[4];
  11.         array summer[*] summer:;
  12.         do i=1 to dim(summer);
  13.                 sum[i]+summer[i];
  14.         end;
  15.         if eof;
  16.         drop i;
  17. run;
复制代码
我的博客: http://elek.me/sas
联系我: http://about.me/elek

报纸
elek.me 发表于 2010-12-31 09:02:45
这种算法,用 proc means ,我觉得是最合适的:
  1. data wide;
  2.         input name $ summer1-summer4;
  3. cards;
  4. a 1 2 3 4
  5. b 1 2 3 4
  6. c 1 2 3 4
  7. ;

  8. ods listing close;
  9. proc means data=wide nway;
  10.         var summer:;
  11.         id summer:;/*可以不要这个语句*/
  12.         output out=want(drop=_type_ _freq_) sum=/autoname;
  13. run;
  14. ods listing;
复制代码
我的博客: http://elek.me/sas
联系我: http://about.me/elek

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 08:04