楼主: yukai08008
2231 18

[程序分享] 数据日常更新检验宏SAS代码_Andy的原创帖2 [推广有奖]

11
yukai08008 在职认证  发表于 2016-1-21 09:45:49
yukai08008 发表于 2016-1-21 09:38
应该是可以的,你这么写确实更精炼一些
不过还有一点,个人认为能用data步的事尽量不要用proc sql,因为data步是sas自己做的东西,相对相率高,也安全。proc sql是为了和sql语句对接写的过程,主要是为了方便用sql和外部数据相连。sql本身存在一些非技术上的小风险(经验不足或者不小心容易造成死循环或者很大的中间结果),这个在sas base的培训文档里有说过的。我一般只在不得不用sql的时候才调用这个过程。

12
co_fund 发表于 2016-1-21 09:47:52
感谢之前的回复
%dsort(a1 out=a4,&key)我能猜到意思
可是%sort2(a5,gap,&key)是什么 ?

13
yukai08008 在职认证  发表于 2016-1-21 09:53:48
co_fund 发表于 2016-1-21 09:47
感谢之前的回复
%dsort(a1 out=a4,&key)我能猜到意思
可是%sort2(a5,gap,&key)是什么 ?
dsort是根据某个主键去重,sort2是根据两个主键去重,相当于
proc sort data=x ;
by a b;
run;
我把宏回复给你了,但是要审核.

14
yukai08008 在职认证  发表于 2016-1-21 09:54:40
yukai08008 发表于 2016-1-21 09:53
dsort是根据某个主键去重,sort2是根据两个主键去重,相当于
proc sort data=x ;
by a b;
sorry,sort2是根据两主键排序,不是去重,诶,这贴吧管的,都不能顺利发帖了

15
co_fund 发表于 2016-1-21 10:41:52
你可以试试用
%sort(a1 out=a4, &key) 代替%dsort(a1 out=a4,&key)
%sort(a5,gap &key) 代替%sort2(a5,gap,&key)
根据 我的测试 是等价的

16
yukai08008 在职认证  发表于 2016-1-21 10:57:35
co_fund 发表于 2016-1-21 10:41
你可以试试用
%sort(a1 out=a4, &key) 代替%dsort(a1 out=a4,&key)
%sort(a5,gap &key) 代替%sort2(a5,ga ...
第一个应该不行的,你没有用nodupkey这个关键字。第二个肯定是可以的,那一个宏变量相当于解释为gap &key这一串字符,这个是习惯问题,都可以的。

17
yukai08008 在职认证  发表于 2016-1-21 11:16:32
co_fund 发表于 2016-1-21 10:41
你可以试试用
%sort(a1 out=a4, &key) 代替%dsort(a1 out=a4,&key)
%sort(a5,gap &key) 代替%sort2(a5,ga ...
你第一个可能等价的原因是数据的主键可能已经没有重复,这个时候sort是等于dsort的

18
co_fund 发表于 2016-1-21 11:21:15
yukai08008 发表于 2016-1-21 11:16
你第一个可能等价的原因是数据的主键可能已经没有重复,这个时候sort是等于dsort的
你是说这样? %sort(dates out=b3 nodupkey, date);

19
yukai08008 在职认证  发表于 2016-1-21 11:24:35
co_fund 发表于 2016-1-21 11:21
你是说这样? %sort(dates out=b3 nodupkey, date);
对这样是等价的。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 13:09