全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
15045 26
2011-11-22
最近看到很多疑难解惑的帖子(如:https://bbs.pinggu.org/thread-1255645-1-1.html)都在讨论分组排序的问题,包括如何分别在DATA步和SQL中实现这一功能?对此,特做一总结,共同分享!欢迎讨论!
Q: 原始数据集如下:

Obs

var1

var2

1

A

z

2

A

y

3

A

x

4

A

t

5

B

s

6

B

d

7

C

f

8

C

g

9

C

h


A:想要得到一个分组排序的编号的变量flag, 期望的数据集如下:

Obs

var1

var2

flag

1

A

t

1

2

A

x

2

3

A

y

3

4

A

z

4

5

B

d

1

6

B

s

2

7

C

f

1

8

C

g

2

9

C

h

3


DATA步实现(简单快捷):
复制代码
SQL实现1(借用monotonic() 函数):
复制代码

SQL实现2(增加一个temp变量,借助该变量实现):

复制代码
二维码

扫码加我 拉你入群

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

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

全部回复
2011-11-22 09:40:34
技术贴,顶起
二维码

扫码加我 拉你入群

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

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

2011-12-20 19:52:24
真牛
二维码

扫码加我 拉你入群

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

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

2012-1-11 11:01:29
顶起,刚好缺这个~
二维码

扫码加我 拉你入群

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

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

2012-1-11 15:53:25
以前遇到这个问题
还不熟悉first、last的用法
用lag写了一段也实现了这个结果

data final;
set test;
no=1;
if Var1=lag(Var1) then do;
sno+no;
end;
else sno=1;
run;
二维码

扫码加我 拉你入群

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

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

2012-2-20 21:09:08
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群