楼主: whymany
8714 16

[原创博文] sas里面 proc sort nodup by [推广有奖]

11
whymany 发表于 2012-9-25 16:55:29 |只看作者 |坛友微信交流群
cufering 发表于 2012-9-17 08:44
BY 某变量,大概是说排序后在这条记录前后的重复记录会被删除,因此BY不同的变量有时会得出不同的结果
okay~

使用道具

12
kittyforever 发表于 2013-1-17 16:42:10 |只看作者 |坛友微信交流群
重复的by变量记录只保留最前面的一条

使用道具

13
henryyhl 发表于 2013-1-17 22:27:08 |只看作者 |坛友微信交流群
这样删除重复观测会有一些问题,最好是在by中多写几个变量。因为如果写的by变量太少,sas只是删除排序后观测相同的变量。有时会有错误。最好用sql语句。详见cody‘s data cleaning 2nd edition.pages119-123
It's not going to be easy, but it is going to be worth it.

使用道具

14
h_wang 发表于 2013-8-30 21:21:50 |只看作者 |坛友微信交流群
同意LS的,这种情况我是一般用SQL语句。

使用道具

15
妖帝东皇 发表于 2013-8-31 23:43:33 |只看作者 |坛友微信交流群
perkeryang 发表于 2012-9-17 00:04
請用nodupkey代替nodup,
nodup的用法是要相鄰的重複record才會留下一筆
很好很强大!
┏━━━━━━━━━━━━━━┓
   ☞❤学而无友必然孤陋寡闻!❤
┗━━━━━━━━━━━━━━┛

使用道具

16
锦sè♀ 在职认证  学生认证  发表于 2014-10-18 16:44:42 |只看作者 |坛友微信交流群
学习了~

使用道具

17
lizhuo821 学生认证  发表于 2015-5-22 09:41:12 |只看作者 |坛友微信交流群
举个例子吧!比如我们简单构造一个数据集为test,表1所示;
Stkcdtrddtamount
11221500
11221500
11222500
21221500
212221000
212231000
然后呢;
如果是采用普通的sort by stkcd的话呢,输出还是原来的数据集。
  1. proc sort data = test; by stkcd;run;
复制代码
如果是加入了nodup 来排序的话,数据则为表1;
  1. proc sort data = test; by stkcd nodup;run;
复制代码
Stkcd

trddt

amount

1

1221

500

1

1222

500

2

1221

500

2

1222

1000

2

1223

1000

表1 nodup排序的输出结果

如果是加入nodupkey呢,数据则为表2;

  1. proc sort data = test; by stkcd nodupkey;run;
复制代码


Stkcd

trddt

amount

1

1221

500

2

1221

500

表2 nodupkey 排序的输出结果

希望能对大家有用~~~
希望这样

使用道具

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

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

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

GMT+8, 2024-4-28 08:09