一、准备阶段,最重要的材料是Prep Guide和63+20及帖子里分享过的LAB机经:
1.SAS Certified Professional Prep Guide Advanced Programming Using SAS 9.4
2.SAS_ADV_最强题库63+20精解_JJ_noted_by_MZX
3.LAB机经
下面我讲一下,这几份材料如何学习
Prep Guide一定要先从头到尾走一遍,第一遍看的时候,尽量看懂逻辑,可以事后记不住概念,但看的时候至少要看懂例题。实在看不懂就标注好跳过去。
最强题库63+20,这个是必须要看懂的。但是我发现很多大神都没有提到很重要的一点其实很多题已经不考了,比如:create index、 view=option、 LIBRARY.FORMATS、 FILEVAR=option、bufno=option、reuse=YES、compress=CHAR、FULLSTIMER……等等真的不用再看了,考试大纲都没有,剩下的都是教材中介绍很清楚的。
关于LAB机经:这个帖子替大家贴出来了完全够用:https://www.1point3acres.com/bbs/thread-678291-1-1.html
二、答题前注意事项 . 1point3acres我一共考了31个问题,10个lab12道问题,19个选择填空。每个lab只需scoreit,然后写上response number就可以了,10道全是敲完代码看value of response的,只有options mprint mlogic; -baidu 1point3acres
%check15这道中的两个问题不是问value of response的。advance考试之前会给你15分钟,调各个窗口的size,最重要的是教你怎么用%scoreit()
注意事项:
12个lab在前面,每个都需要写完整的code,每道题写完程序要按名字保存在C:\cert\program里,这个program的命名会告诉你,比如叫ACT15.sas. Χ
然后在programs的文件夹里有个叫score.sas的program,打开它,就是%scoreit(),这个括号里就是你保存的程序文件名,比如你填写ACT15,%scoreit(ACT15)。然后run,就会出log results outputdata,打开log会有蓝色的字体(就能出来一个response=xxx)告诉你value of response是多少(比如 709 789等等但不知道数值大小有什么规律),如果题后面问value of response是多少,填进去就行了。(不会像base那样问你第几行哪个variable的值是多少。也有一个题目是问的其他问题,一定要申请题目再回答。)
据说%scoreit()这个很容易出毛病,run完一次再去做下一题的时候results会出毛病,各种报错,不是你代码写错了,是这玩意儿就这样,关掉sas studio重启就好。 因为我平时学习时用的都是windows版本的sas,所以不存在这个问题,缺点就是没有任何代码提示,优点就是编译利索啊。
ADV的考试结果不对但程序有写的话是有部分分数的,所以每道题要按要求保存program文件。
三、选择填空:
一定要彻底搞懂,里面会有一些变体,比如调整一下数值,更换调整选项,所以学习的时候一定要彻底搞懂。还有就是我上面提到的一些不考的,其实可以不看的。这几道出题概率很高:QUESTION 28QUESTION 36 QUESTION 38 QUESTION 39QUESTION 41QUESTION 44QUESTION 46QUESTION 49QUESTION 55QUESTION 58QUESTION 60 QUESTION 63题目 2 题目 8 题目 12 题目 18
其中,有一道变体大概是:. 1point 3 acres
proc sql;. check 1point3acres for more.
select *;
from dictionary.________;-baidu 1point3acres
where libname='某个库名,空着就是所有libref' and menname='某个库里的某个table叫啥,空着就是所有table' and name like '某个column叫啥,空着就是所有columns';
quit;
这个选columns,因为libname menname name都是固定写法,换言之就是你查dictionary要查到什么程度,查到table属性即可,那就用menname=,要查到更详细的columns属性就得用name=
我记得考试中把menname=这个限制条件写上面了,没有写在where clause中。
还有机经63里的36题变体考试中B变成了别的,大概意思是hash只能在data step里建立. From 1point 3acres bbs
四、LAB题:我主要说两个,剩下的都放到附件里
<1>
use proc sql to create a new table : work.car, that contains all unique values of make and type from cert.cars, and rebate from cert.rebate.
For cert.rebate, show make and type if matching; if no matching make and type, show missing. Only three variable: make , type , rebate
这道题,我看很多大神没有写distinct个人觉得要加上,具体你们再看看;还有就是有人说用left join,有人说用full join,我觉得这个题目的意思是让用full join,因为题目说了if no matching make and type, show missing.用了left join就没法show missing了。
<2>
还有就是下面这个题,我平时写的时候没有任何问题的,但是考试的时候,不知道是忘加了一个符号还是怎么滴,直接导致远程服务器崩溃,然后弹窗也删不掉,没法继续考后面的题了,考试中心的人也不知道怎么回事,打了电话也不清楚。建议我重新约考,但我想着前面写了这么多,到这里卡壳,有点心累,我算了一下自己前面做过题,感觉已经可以过了,索性最后两道题直接放弃不做了。所以这里提醒一下,这个循环如果要是不小心搞成无限循环可能会出现bug。如果介意的话,可以把题放到最后做。
%macro loop(start,end);
%do i =&start %to &end;
%if &i>10 %then %do;
data x&i;
x=&i;
run;
%end;. ----
%end
%mend;. 1point 3 acres
%loop(1,200);
<3>
在SQL里面从cert.cargorev中创建一个new Variable: new_var3, if column RevCargo < 24000 new_var3='L', 24000<=RevCargo <= 52000 new_var3='M', otherwise new_var3='H',新table命名为work.result.. check 1point3acres for more.
这道题是我觉得唯一超纲的题,因为case when的用法是老版考试大纲里才有的,新版的并没有的。但是这里用的很简单:. 1point 3acres
proc sql;
create table work.result as
select month,date,
case
when 0<RevCargo<24000 then 'L'
when 24000<=RevCargo<=52000 then 'M'. Χ
else 'H'
end as new_var3
from cert.cargorev;
quit;
proc print;run;