楼主: lizhewenbei
1314 4

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

  • 15关注
  • 5粉丝

已卖:668份资源

副教授

38%

还不是VIP/贵宾

-

威望
0
论坛币
304 个
通用积分
11.3270
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9728 点
帖子
614
精华
0
在线时间
502 小时
注册时间
2008-2-6
最后登录
2025-11-27

楼主
lizhewenbei 学生认证  发表于 2016-9-19 09:09:34 |AI写论文

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