楼主: Rock2000
2334 9

怎样按时间顺序生成顺序号? [推广有奖]

  • 1关注
  • 24粉丝

已卖:6892份资源

学术权威

23%

还不是VIP/贵宾

-

威望
1
论坛币
104790 个
通用积分
51.9656
学术水平
55 点
热心指数
74 点
信用等级
48 点
经验
23510 点
帖子
520
精华
0
在线时间
10924 小时
注册时间
2004-5-27
最后登录
2025-11-12

楼主
Rock2000 发表于 2011-9-25 21:13:40 |AI写论文
5论坛币
比如如下数据,第一列是对象ID,第二列是日期
100001   17JUN2010
100001   13JUL2010
100001   20AUG2010
100001   24SEP2010
100001   22OCT2010
100001   18NOV2010
100001   18DEC2010
100001   11JAN2011
100001   13FEB2011
100001   11MAR2011
100001   16APR2011
100004   14JUN2010
100004   12JUL2010
100004   20AUG2010
100004   23SEP2010
100004   25OCT2010
100004   12NOV2010
100004   13DEC2010
100004   18JAN2011
100007   10JUN2010
100007   09JUL2010
100007   08AUG2010
100007   10SEP2010
100007   08OCT2010
100007   09NOV2010
100007   10DEC2010
100007   10JAN2011
100007   15FEB2011
100007   18MAR2011
100007   18APR2011
100007   11MAY2011

现想生成一新变量,在同ID内由1开始,按时间先后生成顺序号,结果如下,怎样实现?

100001   17JUN2010   1
100001   13JUL2010   2
100001   20AUG2010  3
100001   24SEP2010   4
100001   22OCT2010   5
100001   18NOV2010  6
100001   18DEC2010   7
100001   11JAN2011   8
100001   13FEB2011   9  
100001   11MAR2011   10
100001   16APR2011   11
100004   14JUN2010   1
100004   12JUL2010   2
100004   20AUG2010   3
100004   23SEP2010   4
100004   25OCT2010   5
100004   12NOV2010   6
100004   13DEC2010   7
100004   18JAN2011   8
100007   10JUN2010  1
100007   09JUL2010   2
100007   08AUG2010  3
100007   10SEP2010   4
100007   08OCT2010   5
100007   09NOV2010   6
100007   10DEC2010   7
100007   10JAN2011   8
100007   15FEB2011   9
100007   18MAR2011  10
100007   18APR2011   11
100007   11MAY2011   12


最佳答案

webgu 查看完整内容

试试这个。
关键词:Jan Nov Aug Dec EC2

沙发
webgu 发表于 2011-9-25 21:13:41
试试这个。
  1. proc sort data=have;
  2.   by id date;
  3. run;
  4. data want;
  5.   num=0;
  6. do until(last.id) ;
  7.   set have;
  8.   by id;
  9.   num+1;
  10. output;
  11. end;
  12. run;
复制代码
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

藤椅
Rock2000 发表于 2011-9-25 22:05:47
webgu 发表于 2011-9-25 21:28
试试这个。
可行,谢谢了。

板凳
YueweiLiu 发表于 2011-9-26 07:58:03
webgu 发表于 2011-9-25 21:13
试试这个。
跟这个比较一下:
  1. data want;
  2.         set have;
  3.         by id;
  4.         if first.id then num=1;
  5.         else num+1;
  6. run;
复制代码
已有 2 人评分学术水平 热心指数 收起 理由
Rock2000 + 1 + 1 补偿
webgu + 1 + 1 呵呵,学习 了。

总评分: 学术水平 + 2  热心指数 + 2   查看全部评分

报纸
webgu 发表于 2011-9-26 12:50:54
YueweiLiu 发表于 2011-9-26 07:58
跟这个比较一下:
嗯,这样简洁多了。
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

地板
YueweiLiu 发表于 2011-9-26 13:17:04
webgu 发表于 2011-9-26 12:50
嗯,这样简洁多了。
呵呵。。。

7
shawfee 发表于 2011-9-26 19:03:01
学习了~~~~~
愛是恆久忍耐,又有恩慈;愛是不嫉妒;愛是不自誇,不張狂,不作害羞的事,不求自己的益處,不輕易發怒,不計算人的惡,喜歡不義,只喜歡真理;凡事包容,凡事相信,凡事盼望,凡事忍耐;愛是永不止息。

8
Rock2000 发表于 2011-9-26 22:52:55
YueweiLiu 发表于 2011-9-26 07:58
跟这个比较一下:
学习了,谢谢。

9
Siuhan1 发表于 2021-9-5 16:58:06
webgu 发表于 2011-9-25 21:13
试试这个。
请问如果不是每个id都有那么多日期该如何按日期大小排序,就是每个id不一定有相同的数据量,第一个和最后一个日期不一定相同,但又想给每个id的日期进行排序,比如第一个id包含的日期有201001、201002...202108这些,第二个id包含的日期有201201、201202...202101这些,想实现排序:第一个id:201001(1)、201002(2)...202108(140);第二个id:201201(25)、201202(26)...202101(133)。请问这种情况该如何实现呀?

10
Siuhan1 发表于 2021-9-5 16:58:23
YueweiLiu 发表于 2011-9-26 07:58
跟这个比较一下:
请问如果不是每个id都有那么多日期该如何按日期大小排序,就是每个id不一定有相同的数据量,第一个和最后一个日期不一定相同,但又想给每个id的日期进行排序,比如第一个id包含的日期有201001、201002...202108这些,第二个id包含的日期有201201、201202...202101这些,想实现排序:第一个id:201001(1)、201002(2)...202108(140);第二个id:201201(25)、201202(26)...202101(133)。请问这种情况该如何实现呀?

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

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