楼主: xiaobai922
2029 5

[原创博文] 关于一个宏参数的设置问题 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

33%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
2.8500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
152 点
帖子
56
精华
0
在线时间
208 小时
注册时间
2009-1-18
最后登录
2023-3-25

楼主
xiaobai922 发表于 2012-4-13 09:52:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
因为工作中很多涉及到了年龄分组的计算,我自己写了一个希望以后用起来方便一点,但是在其中宏参数设置中出现了点问题,就是我希望 do i=&min to &max by &h,1;中的1也能用宏参数表示(有时候小年龄分组要细化一下,不是5岁一组),但是
如果这样写的话,不需要小年龄组细分的时候就出问题了,那个逗号去不掉,运行不了,希望大家能帮助我一下,PS:我初学,程序写的不好,也希望指出,也多多学习,谢谢


%macro ageid(max,h,data,min=0,f=);
data a;
do i=&min to &max by &h,&f;
output;
end;
run;
proc sort data=a;
by i;
run;
data a;
set a end=last;
j=lag(i);
if last then i=1000;
if i=&min then delete;
run;
data _null_;
set a end=last;
call symput("qian"||left(trim(_n_)),j);
call symput("hou"||left(trim(_n_)),i);
if last then call symput("num",_n_);
run;
%put _user_;
%do i=1 %to #
data age;
set &data;
if &&qian&num<=age<&&hou&num then ageid="&&qian&num.-";
run;
%end;
%mend;
二维码

扫码加我 拉你入群

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

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

关键词:symput delete output outpu Macro 程序

回帖推荐

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

应该是 data &data; set &data; if &&qian&i

本帖被以下文库推荐

沙发
xiaobai922 发表于 2012-4-16 09:26:12
自己顶一个

藤椅
xiaobai922 发表于 2012-4-16 09:26:52
data age;
set &data;
if &&qian&num<=age<&&hou&num then ageid="&&qian&num.-";
run;

这部分写错了,应该是
data age;
set &data;
if &&qian&i<=age<&&hou&i then ageid="&&qian&i.-";
run;

板凳
xiaobai922 发表于 2012-4-16 09:29:01
应该是
data &data;
set &data;
if &&qian&i<=age<&&hou&i then ageid="&&qian&i.-";
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

报纸
chendonghui1987 发表于 2012-4-16 16:57:02
关注中

地板
yanziwoaini 发表于 2012-4-16 20:37:56
学习

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

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