SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 833|回复: 1
打印 上一主题 下一主题

编流水号和排序之问题?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-7-25 20:31:14 | 只看该作者

编流水号和排序之问题?

各位前辈高手,我想在档案中建立一编码的变量,不知正确的语法该怎么写呢?

此檔为日期和时间的档案,而序号是以时间为标准,相同则序号(1, 2, 3, 4, ….), 而当时间变化时,序号则重新计算。(原本是没序号这栏的,而我想再加上这一字段,但是日期若经过排序后,内容会整个乱掉,不知该如何写!!)


原来内容                变更后的内容
日期        时间                日期        时间        序号
20010102        100102                20010102        100102        1
20010102        100102                20010102        100102        2
20010102        100102                20010102        100102        3
20010102        100102                20010102        100102        4
20010102        100125                20010102        100125        1
20010102        100125                20010102        100125        2
20010102        100125                20010102        100125        3
20010102        100225     →→→变成20010102        100225        1
20010102        100225                20010102        100225        2
20010103        100102                20010103        100102        1
20010103        100102                20010103        100102        2
20010103        100102                20010103        100102        3
20010103        100102                20010103        100102        4
20010103        100125                20010103        100125        1
20010103        100125                20010103        100125        2
20010103        100125                20010103        100125        3
20010103        100225                20010103        100225        1
20010102        100225                20010103        100225        2

目前我的语法为
data dateno;
input date$ time$;
cards;
20010102 100102
20010102 100102
20010102 100102
20010102 100102
20010102 100125
20010102 100125
20010102 100125
20010102 100225
20010102 100225
20010103 100102
20010103 100102
20010103 100102
20010103 100102
20010103 100125
20010103 100125
20010103 100125
20010103 100225
20010103 100225
;
run;
proc sort data=dateno;
by date;
by time;
run;

data addno;
     set dateno;
         by time;
     if first.time then no=1;
        else no+1;
  run;
proc print;run;


请各位前辈高手提供建议,谢谢各位!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-7-26 09:02:23 | 只看该作者

Re: 编流水号和排序之问题?

data dateno;
input date$ time$;
cards;
20010102 100102
20010102 100102
20010102 100102
20010102 100102
20010102 100125
20010102 100125
20010102 100125
20010102 100225
20010102 100225
20010103 100102
20010103 100102
20010103 100102
20010103 100102
20010103 100125
20010103 100125
20010103 100125
20010103 100225
20010103 100225
;
run;


data dateno0;
set dateno;
datetime=date||time;
run;
proc sort data=dateno0;
by datetime;
run;

data addno;
retain no;
set dateno0;
by datetime;

if first.datetime then no=1;
else no+1;
run;
proc print;run;


注意一下时间字段,你以time为准是不对的。还有注意一下retain的用法。

给分!!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 03:27 , Processed in 0.067200 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表