楼主: houcanni
5581 5

[问答] 对变量ID进行顺序编号 [推广有奖]

  • 0关注
  • 0粉丝

高中生

47%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
275 点
帖子
10
精华
0
在线时间
39 小时
注册时间
2017-11-25
最后登录
2020-8-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有这样一个数据集a
[td]
Obsid
1a
2a
3a
4b
5b
6c
7c
8c
9c
10d
想对id每个组内进行顺序编号,变成如下效果:
[td]

Obs

id

i

1

a1

2

a2

3

a3

4

b1

5

b2

6

c1

7

c2

8

c3

9

c4

10

d1

请问各位大神,有什么代码可以办到吗?


我尝试了用do until(last.id); i+1;,老是出现死循环。









     




二维码

扫码加我 拉你入群

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

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

关键词:until Last obs BSI sid

沙发
houcanni 发表于 2017-12-16 15:54:35 |只看作者 |坛友微信交流群
有大神知道吗,求帮助

使用道具

藤椅
superguy333 发表于 2017-12-16 17:45:03 来自手机 |只看作者 |坛友微信交流群
用retain语句

使用道具

板凳
superguy333 发表于 2017-12-16 20:12:04 |只看作者 |坛友微信交流群
  1. data X1;
  2. INPUT  
  3. Obs 4.0         id$2.        i 4.0;
  4. cards;
  5. 1        a        1
  6. 2        a        2
  7. 3        a        3
  8. 4        b        1
  9. 5        b        2
  10. 6        c        1
  11. 7        c        2
  12. 8        c        3
  13. 9        c        4
  14. 10        d        1
  15. ;
  16. RUN;

  17. DATA X2;
  18. SET X1;
  19. DROP I;
  20. RUN;

  21. PROC SORT DATA=X2;
  22. BY ID;
  23. RUN;

  24. DATA X3;
  25. SET X2;
  26. by id;
  27. IF FIRST.ID  THEN DO ;
  28.            i=1;
  29.                    END ;
  30. IF NOT FIRST.ID THEN DO;
  31.          retain i;
  32.          i=i+1;
  33.                   end;
  34. run;
复制代码


使用道具

报纸
GLY4030 在职认证  发表于 2018-7-7 15:40:13 |只看作者 |坛友微信交流群
假设数据集a存储在临时逻辑库work中,则如下代码可以解决你的问题。
proc sort data=work.a;
   by id;
run;

data work.a;
   set work.a;
   by id;
   retain i;
   if first.id then i=1
   i = i + 1;
run;

使用道具

地板
Renated 发表于 2021-4-8 19:41:14 |只看作者 |坛友微信交流群
GLY4030 发表于 2018-7-7 15:40
假设数据集a存储在临时逻辑库work中,则如下代码可以解决你的问题。
proc sort data=work.a;
   by id;
有个小错误

"假设数据集a存储在临时逻辑库work中,则如下代码可以解决你的问题。
proc sort data=work.a;
   by id;
run;

data work.a;
   set work.a;
   by id;
   retain i;
   if first.id then i=0
   i = i + 1;
run;"

使用道具

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

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

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

GMT+8, 2024-4-26 23:00