楼主: min5951869
4342 4

SAS宏编写一个简单的相加程序,求教!! [推广有奖]

  • 0关注
  • 1粉丝

博士生

73%

还不是VIP/贵宾

-

威望
0
论坛币
1137 个
通用积分
5.7300
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1288 点
帖子
53
精华
0
在线时间
631 小时
注册时间
2012-3-29
最后登录
2023-11-28

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
本人由于刚接触SAS的宏编程,想试着编写一个简单的加法,大概思路是这样的,即使编写1到n的连加,选定一个n,会出相应的结果。我的试编程序如下:望各位大神指点。
%macro and(n);*存在错误,需要修改;
%let sum=0;
%do i=1 %to &n;
%let &sum=&sum+&i;
%put &∑
%end;
%mend and;
%and(5);
二维码

扫码加我 拉你入群

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

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

关键词:SAS宏 Macro sas的 Sum End 程序

沙发
Kiran°F 发表于 2016-6-13 21:53:39 |只看作者 |坛友微信交流群
  1. %macro and(n=);
  2. data sum;
  3. sum=0;
  4. do i=1 to &n;
  5. sum=sum+i;
  6. end;
  7. run;
  8. %mend and;
  9. %and(n=5);
复制代码

感觉这样就可以了呢(不太懂put的用法…)

使用道具

藤椅
ifendo 发表于 2016-6-13 22:43:53 |只看作者 |坛友微信交流群
%macro and(n);
%let sum=0;
%do i=1 %to &n;
%let sum=&sum+&i; * 这里是个赋值语句,所以等号左边, 不应该是一个macro variable reference;
%put %eval(&sum);  * 默认情况下, 宏变量是不会自动求和的,需要使用%eval function;
%end;
%mend and;
%and(5);

这样改就可以了吧

使用道具

板凳
min5951869 发表于 2016-6-14 08:08:29 |只看作者 |坛友微信交流群
Kiran°F 发表于 2016-6-13 21:53
感觉这样就可以了呢(不太懂put的用法…)
你这个显示的为什么是i=6?

使用道具

报纸
johyw 发表于 2016-6-15 04:15:08 |只看作者 |坛友微信交流群
当系统i=5做完循环后,i会加1变成6,所以你看到的i是6.不用宏的时候i也是6.

使用道具

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

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

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

GMT+8, 2024-4-28 02:14