楼主: wutao1983
4928 8

SAS重复值选取 [推广有奖]

  • 0关注
  • 0粉丝

大专生

30%

还不是VIP/贵宾

-

威望
0
论坛币
1553 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5682 点
帖子
14
精华
0
在线时间
77 小时
注册时间
2006-3-12
最后登录
2020-3-19

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
楼主在去除重复数据时候发现,有的数据项其他字段信息完全相同,仅有一个 日期的字段不重复。例如:

姓名    年龄      性别      参加日期
张三     12          男        201510
张三     12          男        201509
李四      13         女        201301
李四      13         女        201402

我只想选取参加日期较大的数据保留,其余的重复项删除。即结果是:

姓名    年龄      性别      参加日期
张三     12          男        201510

李四     13          女        201402

我现在想到的方法是对姓名和参加日期降序排序,然后by 其他变量 去除重复值,不知道行不行。
不知道各位大神有没有更加简洁明了的方式实现?
二维码

扫码加我 拉你入群

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

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

关键词:重复值 简洁明了 不知道 重复数 有没有 信息 姓名

沙发
wwang111 发表于 2016-8-3 12:18:41 |只看作者 |坛友微信交流群
proc sql;
create table wanted as
select * from test
group by name
having date=max(date);
quit;

使用道具

藤椅
xiaomou1 在职认证  企业认证  发表于 2016-8-3 12:54:01 |只看作者 |坛友微信交流群
by姓名和参加日期降序排序, 然后if first.姓名。或是升序就是if last.姓名.

proc sort data=test; by name date; run;

data wanted;
  set test;
  by name date;
  if last.name;
run;

使用道具

板凳
wutao1983 发表于 2016-8-3 13:04:07 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-3 12:18
proc sql;
create table wanted as
select * from test
好的,sql的命令用的不多,稍后试一下。多谢!

使用道具

报纸
wutao1983 发表于 2016-8-3 13:04:30 |只看作者 |坛友微信交流群
xiaomou1 发表于 2016-8-3 12:54
by姓名和参加日期降序排序, 然后if first.姓名。或是升序就是if last.姓名.

proc sort data=test; by n ...
这个命令看起来应该能满足要求,多谢多谢!

使用道具

地板
wutao1983 发表于 2016-8-3 15:33:28 |只看作者 |坛友微信交流群
wwang111 发表于 2016-8-3 12:18
proc sql;
create table wanted as
select * from test
试了这个代码,对于有的参加日期是相同的月份这种情况好像不灵

使用道具

7
wutao1983 发表于 2016-8-3 15:33:56 |只看作者 |坛友微信交流群
xiaomou1 发表于 2016-8-3 12:54
by姓名和参加日期降序排序, 然后if first.姓名。或是升序就是if last.姓名.

proc sort data=test; by n ...
这个代码是可行的,多谢!

使用道具

8
wwang111 发表于 2016-8-3 16:05:01 |只看作者 |坛友微信交流群
wutao1983 发表于 2016-8-3 15:33
试了这个代码,对于有的参加日期是相同的月份这种情况好像不灵
proc sql;
create table wanted as
select distinct * from test
group by name
having date=max(date);
quit;

使用道具

9
Dany2 发表于 2016-8-4 19:01:31 来自手机 |只看作者 |坛友微信交流群
proc sort data =your_set out=set1;
By 姓名   Descending 参加时间;
Run;

Proc sort data =set1 nodupkey;
By 姓名;
Run;

使用道具

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

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

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

GMT+8, 2024-4-24 23:37