楼主: lizhewenbei
1095 4

请教大牛,如何利用宏,简化下面这段代码? [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请教大牛,如何利用宏,简化下面这段代码?

目的:计算每个人经历过多少个职位

原始数据:
姓名Position1Position2Position3Position4Position5期望的统计结果
张三副主任科员主任科员副处长  3
李四副司长司长2
王五财务部副总经理总经理董事长助理董事长常务董事5
赵六副总经理总经理3
马七业务经理1
赵二副总经理总经理   2


我的代码:
data tmp2;
set   tmp1;
if position1~="" and position2="" then count=1;
else if position2~="" and position3="" then count=2;
else if position3~="" and position4="" then count=3;
else if position4~="" and position5="" then count=4;
else if position5~="" then count=5;
run;



主要的疑问:
使用Macro test;% do i=1 %to 5;
只能表示&i.的概念,难以表示&i.+1的概念

二维码

扫码加我 拉你入群

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

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

关键词:position Count Macro Then else 财务部 董事长 总经理 count 如何

沙发
孤单的我们 发表于 2016-9-19 09:22:48 |只看作者 |坛友微信交流群
count=5-cmiss(of position1-position5);
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 3 + 3 + 3 + 3 精彩帖子

总评分: 论坛币 + 3  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

藤椅
lizhewenbei 学生认证  发表于 2016-9-19 09:29:14 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-9-19 09:22
count=5-cmiss(of position1-position5);
非常棒,可以解决这个问题。
如果使用宏该怎么做呢?

比如:if position&i.~="" and position&i.+1="" then count=&i.;

使用道具

板凳
孤单的我们 发表于 2016-9-19 10:03:30 |只看作者 |坛友微信交流群
  1. %macro test;
  2. data tmp2;
  3.         set tmp1;
  4.         %do i=1 %to 5;
  5.         if position&i^='' %if &i<5 %then & position%eval(&i+1)=''; then count=&i;
  6.         %end;
  7. run;
  8. %mend;

  9. %test
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 5 + 3 + 3 + 3 收下我的膝盖

总评分: 论坛币 + 5  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

报纸
lizhewenbei 学生认证  发表于 2016-9-19 10:37:46 |只看作者 |坛友微信交流群
孤单的我们 发表于 2016-9-19 10:03
太牛了

使用道具

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

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

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

GMT+8, 2024-5-1 03:13