楼主: thebouncer1
2829 10

[原创博文] 求教序数问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:5份资源

高中生

35%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
220 点
帖子
24
精华
0
在线时间
25 小时
注册时间
2009-8-18
最后登录
2025-6-4

楼主
thebouncer1 发表于 2011-7-7 11:48:22 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求教序数问题:
D这列是我想要的。 把每个省根据 C 列来给序列号,凡是一,就往上加, 但是遇到零就清零从头从一开始。 用SAS 怎么做? 谢谢。

  A
  
  B
  
  C
  
D
  广西
  
  

12/31/2004


  
  

1


  
  

1


  
  广西
  
  

1/1/2005


  
  

1


  
  

2


  
  广西
  
  

9/2/2005


  
  

1


  
  

3


  
  广西
  
  

1/3/2009


  
  

0


  
  

0


  
  广西
  
  

1/4/2010


  
  

1


  
  

1


  
  广西
  
  

1/5/2011


  
  

1


  
  

2


  
  湖北
  
  

9/2/2005


  
  

0


  
  

0


  
  湖北
  
  

1/3/2009


  
  

1


  
  

1


  
  湖北
  
  

2/4/2010


  
  

1


  
  

2


  
  湖北
  
  

4/5/2011


  
  

1


  
  

3


  
  山东
  
  

12/31/2004


  
  

0


  
  

0


  
  山东
  
  

1/1/2005


  
  

1


  
  

1


  
  山东
  
  

4/2/2005


  
  

1


  
  

2


  
  山东
  
  

9/3/2006


  
  

1


  
  

3


  
  山东
  
  

9/2/2007


  
  

1


  
  

4


  
  山东
  
  

1/3/2009


  
  

0


  
  

0


  
  山东
  
  

2/4/2010


  
  

1


  
  

1


  
  山东
  
  

4/5/2011


  
  

1


  
  

2


  
二维码

扫码加我 拉你入群

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

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

关键词:序列号 怎么做 开发 序列号

本帖被以下文库推荐

沙发
honghejing 发表于 2011-7-7 12:20:35
data b;
set a;
by a c;
if first.c then d=c;
else d+1;
run;

藤椅
pobel 在职认证  发表于 2011-7-7 12:40:13
set a;
by a b;
retain seq;
if first.a then seq=0;
seq=ifn(c=0,0,seq+1);
和谐拯救危机

板凳
thebouncer1 发表于 2011-7-7 12:45:40
@honghejing谢谢, 但是不行啊。
我原来就这么做, 但是C 列全是 1, 0,

ERROR: BY variables are not properly sorted on data set

报纸
thebouncer1 发表于 2011-7-7 12:53:10
3# pobel
谢谢,还是不行, 同上的错误信息。
而且第一个不一定是0, 要是 1 的话就是1, 比如例子里面广西第一个就不是0。

地板
honghejing 发表于 2011-7-7 12:55:28
你要先sort by一下

7
honghejing 发表于 2011-7-7 12:55:56
proc sort data=a;
by a c b;
run;

8
thebouncer1 发表于 2011-7-7 13:02:29
7# honghejing
已经sort 了, 不行。 谢谢。 还是上面的错误信息。可能你没看清楚,同一个省可能出项两次或更多的序列,比如

省份  D列(根据C 列的数值)

广西  1
广西  2
广西  3
广西  0
广西  1
广西  2
广西  0
广西  1

9
soporaeternus 发表于 2011-7-7 13:19:23
  1. data a;
  2.         input c:$8. x;
  3.         _n+1;
  4.         datalines;
  5. 广西  0
  6. 广西  1
  7. 广西  1
  8. 广西  0
  9. 广西  1
  10. 广西  1
  11. 广西  0
  12. 广西  0
  13. dasd 1
  14. asdasd 1
  15. asdad 0
  16. asds 1
  17.         ;
  18. run;

  19. proc sort data=a;by _n;run;quit;

  20. data a;
  21.         set a;
  22.         by _n;
  23.         d+1;
  24.         if x=0 then d=0;
  25. run;
复制代码
添个自增列去排序,
接下来就是楼上几位的做法。
Let them be hard, but never unjust

10
thebouncer1 发表于 2011-7-7 19:41:44
9# soporaeternus
没看懂,D列是我想要的结果。

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

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