楼主: zcjdkl0703
1839 5

关于sas删除重复记录中相关程序问题 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

35%

还不是VIP/贵宾

-

威望
0
论坛币
208 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
785 点
帖子
138
精华
0
在线时间
138 小时
注册时间
2014-3-8
最后登录
2018-7-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在删除重复记录中有段程序如下
  1. data test_n test_up;
  2.     set test;
  3.     by customercode date;
  4.     retain n o;
  5.     if first.date then
  6.       do;
  7.       n=1;
  8.       output test_n;
  9.     else n+1;
  10.     if last.date and n ge 2 then output test_up;
  11. run;
复制代码
现有如下疑问,忘大侠指点:
1、如果有三条记录重复(或者更多),那么第二条记录的last.date取值是怎样的呢?
2、倒数第二句程序为什么用的是last.date and n ge 2,而不是 last.date or n ge 2?
3、程序中的retain语句如何解读及其作用?


二维码

扫码加我 拉你入群

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

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

关键词:Customer RETAIN output custom outpu 程序 记录 倒数 如何

沙发
mingfeng07 学生认证  发表于 2015-7-16 22:42:25 |只看作者 |坛友微信交流群
1.只要出现大于1条的重复,第一个if取组第一个重复记录,第二个if取组最后一条重复记录;
2.不用or是为了排除当组只有一个记录的情况时第一个if和第二个if就重复了。
3.retain语句可以百度一下,很简单,但是用在这里没有必要。
另提醒:代码有错误,第一个if ....then do....end;output语句后少了个end。
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
zcjdkl0703 + 5 + 1 + 1 + 1 热心帮助其他会员
Tigflanker + 2 + 2 热心帮助其他会员

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

使用道具

first.和last.直接用的话对于偶数条重复记录去重是可以的,但是对于奇数条重复记录好像是会保留中间一条的。

使用道具

板凳
zcjdkl0703 发表于 2015-7-18 09:25:31 |只看作者 |坛友微信交流群
mingfeng07 发表于 2015-7-16 22:42
1.只要出现大于1条的重复,第一个if取组第一个重复记录,第二个if取组最后一条重复记录;
2.不用or是为了排 ...
可否认为执行程序之后将产生以下数据集,然后在此数据集之上进行选择所需记录?
customer     date       first_date    last_date      n
A             2013-1-1        1              0             1
A             2013-1-1        0              0             2
A             2013-1-1        0              0             3
A             2013-1-1        0              1             4
B             2013-1-1        1              1             1
C             2013-1-1        1              0             1
C             2013-1-1        0              0             2
C             2013-1-1        0              1             3

那么在test_n中将保留记录
customer     date       first_date    last_date      n
A             2013-1-1        1              0             1
B             2013-1-1        1              1             1
C             2013-1-1        1              0             1


而在test_up中将保留记录
customer     date       first_date    last_date      n
A             2013-1-1        0              1             4
C             2013-1-1        0              1             3

那么我是否可以认为其实if first_last那段语句是没什么用的,因为我只是需要test_n数据集?



使用道具

报纸
zcjdkl0703 发表于 2015-7-20 09:24:26 |只看作者 |坛友微信交流群
我顶下

使用道具

地板
zcjdkl0703 发表于 2015-7-20 15:12:05 |只看作者 |坛友微信交流群
我再顶下{:2_38:}

使用道具

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

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

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

GMT+8, 2024-4-25 16:14