请选择 进入手机版 | 继续访问电脑版
楼主: 进行式
12130 19

[问答] 江湖救急——SAS如何删除数据集中的重复记录 [推广有奖]

  • 1关注
  • 0粉丝

本科生

96%

还不是VIP/贵宾

-

威望
0
论坛币
43 个
通用积分
0
学术水平
1 点
热心指数
0 点
信用等级
1 点
经验
1011 点
帖子
67
精华
0
在线时间
129 小时
注册时间
2013-12-17
最后登录
2019-5-24

进行式 发表于 2014-1-14 10:09:23 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
  • 数据集中有大量记录,有几列变量的观测值都有十几条重复记录。该怎么写程序删除呢?谢谢了
    我主要是想根据其中ID、L两个变量来删除观测 ,因为有些ID的观测值在L中有多个记录。如图

二维码

扫码加我 拉你入群

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

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

关键词:江湖救急 数据集 观测值 记录 江湖 如何

WE$BH$5MX{EJTR3$J~_DVG0.jpg
PN%_6PN]S_%5~NH$GF`U[M6.jpg
jy06056064 发表于 2014-1-14 11:21:55 |显示全部楼层 |坛友微信交流群
proc sort nodupkey;

使用道具

xiaoyu163 发表于 2014-1-14 11:29:25 |显示全部楼层 |坛友微信交流群
看不到图,我来假设你的数据中只有两个变量: ID 和 L,然后数据类似T1, 先排序,然后每个ID只选择一个record,具体程序如下:

data T1;
  input ID L;
  cards;
1 10
1 20
2 10
1 30
2 15
;
run;
proc print; title "Table for T1"; run;

proc sort data=T1 out=T2;
  by ID L;
run;
proc print; title "Table for T2"; run;

data T2;
  set T1;
  by ID L;
  if ^first.ID then delete;
run;
proc print; title "Table for T2: No Duplicated ID"; run;

使用道具

zw612003 发表于 2014-1-14 13:15:29 来自手机 |显示全部楼层 |坛友微信交流群
jy06056064 发表于 2014-1-14 11:21
proc sort nodupkey;
proc sort data=   out=  nodupkey;
by id L;
run;

使用道具

进行式 发表于 2014-1-14 15:44:33 |显示全部楼层 |坛友微信交流群
xiaoyu163 发表于 2014-1-14 11:29
看不到图,我来假设你的数据中只有两个变量: ID 和 L,然后数据类似T1, 先排序,然后每个ID只选择一个recor ...
恩,谢谢哈。可是我这个数据处理有点麻烦,因为如果我按我每个ID只保留一个观测值我会丢失L中的不同观测。如果我按L筛选,又会丢失ID。我想要的结果是每个ID对应的L是唯一的
数据结构就像这样
ID      L
1       0
1       0
1       0
1       1
1       1
2       1
2       1

使用道具

420948492 发表于 2014-1-14 18:50:09 |显示全部楼层 |坛友微信交流群
zw612003 发表于 2014-1-14 13:15
proc sort data=   out=  nodupkey;
by id L;
run;
正解
有人的地方就有江湖

使用道具

proc sort data=a out=b;
by id l;
run;
data c;
set b;
by id l;
if first.l;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
灯小登 + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

进行式 发表于 2014-1-16 20:25:20 |显示全部楼层 |坛友微信交流群
牵你↗左手 发表于 2014-1-15 08:37
proc sort data=a out=b;
by id l;
run;
非常感谢!但是运行出的结果有点小问题,因为我的数据中ID号的前几位数是相同的。运行完程序后,部分ID数据的前几位数也被删除了。如图,有些ID运行完之后变成00068前几位的110012也被删除了。这是什么原因呢?谢谢解答哈
W_`OX@[VM74MS4XEEK8W_U1.jpg

使用道具

进行式 发表于 2014-1-16 20:25
非常感谢!但是运行出的结果有点小问题,因为我的数据中ID号的前几位数是相同的。运行完程序后,部分ID数 ...
你有没有一直变量的长度?我试了下是没有问题的

使用道具

进行式 发表于 2014-1-17 09:21:18 |显示全部楼层 |坛友微信交流群
牵你↗左手 发表于 2014-1-17 09:04
你有没有一直变量的长度?我试了下是没有问题的
什么是一直变量的长度?就是有一部分数据的ID会变化,大部分都还是对的。是不是跟数据的列属性或者读取的变量长度有关?出现的情况如图。
8_Y_DY{(LIAQ2XZO04UY4$X.jpg

使用道具

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

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

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

GMT+8, 2024-4-18 14:21