1、认证考试真题答案详解SAS Base认证考试70题SAS分多个认证种类:base,advanced,clinic等,但大多需要先通过base认证。但凡这类商业组织提供的考证,基本都是题库型,所以想考过难度并不大。对于只想拿SAS认证的人,如果熟练掌握网上流传甚广的sas真题70题,通过base认证基本就没问题。Q 11. The following SAS program is submitted:data WORK.TOTAL; set WORK.SALARY; by Department Gender; if First. then Payroll=0; Payroll+Wagerate;
2、 if Last.;run;The SAS data set WORK.SALARY is currently ordered by Gender within Department.Which inserted code will accumulate subtotals for each Gender within DepartmentA. GenderB. DepartmentC. Gender DepartmentD. Department Gender答案:A本题知识点:自动变量在SAS读取数据时,在PDV过程中会产生很多自动变量,在输出的数据集中是不可见的。 FIRST.VARIA
3、BLE:同一个BY变量(组),若新的变量值第一次出现时,其first.variable值为1。 LAST.VARIABLE:同一个BY变量(组),若新的变量值最后一次出现时,其last.variable值为1。另外,在BY变量右面有多个变量时,先按第一个变量排序,若第一个变量的观测存在重复时,才按第二个变量排序。Q 2Given the following raw data records in TEXTFILE.TXT: -|-10-|-20-|-30 John,FEB,13,25,14,27,Final John,MAR,26,17,29,11,23,Current Tina,FEB,15
4、,18,12,13,Final Tina,MAR,29,14,19,27,20,CurrentThe following output is desired: Obs Name Month Status Week1 Week2 Week3 Week4 Week5 1 John FEB Final $13 $25 $14 $27 . 2 John MAR Current $26 $17 $29 $11 $23 3 Tina FEB Final $15 $18 $12 $13 . 4 Tina MAR Current $29 $14 $19 $27 $20Which SAS program cor
5、rectly produces the desired outputA. data WORK.NUMBERS; length Name $ 4 Month $ 3 Status $ 7; infile TEXTFILE.TXT dsd; input Name $ Month $; if Month=FEB then input Week1 Week2 Week3 Week4 Status $; else if Month=MAR then input Week1 Week2 Week3 Week4 Week5 Status $; format Week1-Week5 dollar6.; run
6、; proc print data=WORK.NUMBERS; run;B. data WORK.NUMBERS; length Name $ 4 Month $ 3 Status $ 7; infile TEXTFILE.TXT dlm=, missover; input Name $ Month $; if Month=FEB then input Week1 Week2 Week3 Week4 Status $; else if Month=MAR then input Week1 Week2 Week3 Week4 Week5 Status $; format Week1-Week5
7、dollar6.; run; proc print data=WORK.NUMBERS; run;C. data WORK.NUMBERS; length Name $ 4 Month $ 3 Status $ 7; infile TEXTFILE.TXT dlm=,; input Name $ Month $ ; if Month=FEB then input Week1 Week2 Week3 Week4 Status $; else if Month=MAR then input Week1 Week2 Week3 Week4 Week5 Status $; format Week1-W
8、eek5 dollar6.; run; proc print data=WORK.NUMBERS; run;D. data WORK.NUMBERS; length Name $ 4 Month $ 3 Status $ 7; infile TEXTFILE.TXT dsd ; input Name $ Month $; if Month=FEB then input Week1 Week2 Week3 Week4 Status $; else if Month=MAR then input Week1 Week2 Week3 Week4 Week5 Status $; format Week
9、1-Week5 dollar6.; run; proc print data=WORK.NUMBERS; run;答案:C本题知识点:INFILE语句与指示器、INFILE filespecification options;其中,filespecification用来定义文件, options给出选择项; filespecification有以下三种形式:、fileref(文件标志)、filename(文件名)、CARDS指明输入的数据,紧跟着CARDS语句 下列选择项(options)可以出现在INFILE语句中:、COLUMN=variable或COL=variable 定义一个变量,
10、其值是指针所在的当前列位置。、END=variable 定义一个变量, 作为文件结束的标志。、EOF=label是一个语句标号, 当INFILE语句读到文件末尾时, 作为隐含的GOTO语句的目标。、LENGHT=variable 定义一个变量, 其值是当前输入数据行的长度。、FIRSTOBS=linenumber 要求从指定的行开始读取数据, 而不是从文件的第一个记录开始。、OBS=n 指定从一个顺序输入文件中读取数据的最后一个行(即第1第n行)。一个观察可能占n行。、DLM= 若分隔符不是空格,则使用DLM=指定、DSD 忽略引号中数值的分隔符;自动将字符数据中的引号去掉;将两个相邻分隔符视
11、为缺失值处理。、MISSOVER 阻止INPUT进入下一行读取,未赋值变量视为缺失值。、TRUNCOVER 与MISSOVER相似,但在COLUMN INPUT或FORMATTED INPUT中使用。比较 与 的区别: 用于1个数据行用多个input语句读取,停留到下一个INPUT语句。 用于1个数据行含有多个观测值读取时,停留到下一个DATA步。Q 3The following SAS program is submitted:data WORK.DATE_INFO; Day=01 ; Yr=1960 ; X=mdy(Day,01,Yr) ;run;What is the value of
12、the variable XA. the numeric value 0B. the character value 01011960C. a missing value due to syntax errorsD. the step will not compile because of the character argument in the mdy function.答案:A本题知识点:数据类型的自动转换在SAS中,日期时间是以1960年1月1日0时0分0秒作为起点的。因此,mdy(1,1,1960)=0。若把日期时间表示为常数时,要使用相应的格式,带单或双引号,在后面紧跟一个D(日期
13、)、T(时间)、DT(日期时间)。在本题中,日期函数的参数应该是数值,若是字符串,会先尝试字符串是否可以转换为数值,这是自动转换。自动转换是指系统产生一个临时的变量来完成赋值或运算。当自动转换发生时,会在LOG窗口中给出提示。1)、字符型变量 - 数值型变量在下面的情况中,VarB是一个字符型变量,其它是数字型变量。 赋值于一个数字型变量,如:VarA=VarB; 在算术运算中使用,如:VarA=VarB+0; 与一个数字型变量进行比较,如:if VarB=VarA; 在函数中,参数要求数字型变量,如:VarA=sum(VarB,0);2)、数值型变量 - 字符型变量在下面的情况中,VarB是
14、一个数字型变量,其它是字符型变量。 赋值于一个字符型变量,如:VarA=VarB; 在与要求字符的运算符一起使用,如:VarA=|VarB; 在函数中,参数要求字符型变量,如:VarA=trim(VarB);Q 4The Excel workbook REGIONS.XLS contains the following four worksheets: EAST WEST NORTH SOUTHThe following program is submitted: libname MYXLS regions.xls;Which PROC PRINT step correctly display
15、s the NORTH worksheetA. proc print data=MYXLS.NORTH;run;B. proc print data=MYXLS.NORTH$;run;C. proc print data=MYXLS.NORTHe;run;D. proc print data=MYXLS.NORTH$n;run;答案:D本题知识点:打印Excel的某个工作表的数据WHAT IS THAT “$” CHARACTER Looking at SAS Explorer it may be surprising that each dataset written to Excel ap
16、pears twice, once with the expected name and once with a trailing “$”. Unlike a typical data source, data in an Excel spreadsheet need not be left and top aligned. For this Excel has named ranges which allow data to be placed anywhere inside a spreadsheet. By default SAS reads and writes data from n
17、amed ranges on spreadsheets, but will also read spreadsheet data directly in the absence of a named range. When a new SAS dataset is created in an Excel library, SAS creates both a spreadsheet and a named range. Each is given the same name, with thespreadsheet denoted by a trailing “$”. In the examp
18、le at right CLASS is the named range created by the Excel engine and CLASS$ is the spreadsheet created by the Excel engine to hold the named range. Within SAS, the named range is referred to as Wrkbk.CLASS, and the spreadsheet is referenced using the name literal Wrkbk.CLASS$n. SAS name literals are
19、 name tokens written as strings within quotation marks, followed by the letter n. Name literals allow the use of special characters that are not otherwise allowed in SAS names , like the “$” used by the Excel libname engine to distinguish worksheets from named ranges. For more information see the Re
20、commended Readings.Q 5Which statement specifies that records 1 through 10 are to be read from the raw data file customer.txtA. infile customer.txt 1-10;B. input customer.txt stop10;C. infile customer.txt obs=10;D. input customer.txt stop=10; 答案:C本题知识点:INFILE的选项FIRSTOBS=常数,要求从指定的行开始读取数据, 而不是从文件的第一个记录
21、开始。OBS=常数,指定从一个顺序输入文件中读取数据的最后一个行(即第1第n行)。一个观测可能占n行。Q 6After a SAS program is submitted, the following is written to the SAS log: 101 data WORK.JANUARY; 102 set WORK.ALLYEAR(keep=product month num_Sold Cost); 103 if Month=Jan then output WORK.JANUARY; 104 Sales=Cost * Num_Sold; 105 keep=Product Sales
22、; - 22 ERROR 22-322: Syntax error, expecting one of the following: !, !, &, *, *, +, -, , =, , =, , =, AND, EQ, GE, GT, IN, LE, LT, MAX, MIN, NE, NG, NL, NOTIN, OR, =, |, |, =. 106 run;What changes should be made to the KEEP statement to correct the errors in the LOGA. keep=(Product Sales);B. keep P
23、roduct, Sales;C. keep=Product, Sales;D. keep Product Sales;答案:D本题知识点:KEEP语句与KEEP=选项在处理大型数据集时,KEEP=选项的效率较高。 KEEP语句:KEEP variable(s); 不能用于过程步。 KEEP=选项:data-set-name( KEEP=variable(s) ) 可以用于数据步(如,DATA语句、SET语句)、过程步。其中,variable(s)是具体变量,不能是数组、_N_、_ERROR_等。Q 7Which of the following choices is an unacceptab
24、le ODSdestination for producing output that can be viewed in Microsoft ExcelA. MSOFFICE2KB. EXCELXPC. CSVALLD. WINXP答案:D本题知识点:ODS输出Most of these destinations are designed to create output for viewing on a screen or for printing.The OUTPUT destination creates SAS data sets. The MARKUP destination is
25、a general purposetool for creating output in formats defined by tagsets. This includes XML (eXtensible MarkupLanguage), EXCELXP, LaTeX, CSV (comma-separated values), and many other formats where datacan be thought of as separated by tags. The DO CUMENT destination, on the other hand, allowsyou to cr
26、eate a reusable output “document” that yo u can rerender for any destination. So, if yourboss decides he really wants that report in PDF, not RTF, you can replay the output documentwithout having to rerun the entire SAS program that created the data. With an output document,you can also rearrange, d
27、uplicate, or delete tables to further customize your output.摘自The Little SAS Book(Fourth) P152页Q 8The SAS data set named WORK.SALARY contains 10 observations for each department, and is currently ordered by Department.The following SAS program is submitted: data WORK.TOTAL; set WORK.SALARY(keep=Depa
28、rtment MonthlyWageRate); by Department; if First.Department=1 then Payroll=0; Payroll+(MonthlyWageRate*12); if Last.Department=1; run;Which statement is trueA. The by statement in the DATA step causes a syntax error.B. The statement Payroll+(MonthlyWageRate*12); in the data step causes a syntax erro
29、r.C. The values of the variable Payroll represent the monthly total for each department in the WORK.SALARY data set.D. The values of the variable Payroll represent a monthly total for all values of WAGERATE in the WORK.SALARY data set.答案:C本题知识点:类似第1题Q 9data course;input exam;datalines;50.1;run;proc
30、format;value score 1 50 = Fail 51 100 = Pass;run;proc report data =course nowd;column exam;define exam / display format=score.;run;What is the value for examA. FailB. PassC. 50.1D. No output答案:C本题知识点:PROC FORMAT语句PROC FORMAT;VALUE namerange-1=formatted-text-1;range-2=formatted-text-2;range-n=formatt
31、ed-text-n;若name为字符串设计格式,则必须在开头加$,长度不超过32字节;name不能以数字结尾,除了下划线外,不能含其他的任何特殊字符。在range右侧文本可达到32767字节。 变量值是字符串要加引号。 range是多个值,要用逗号。 连续的要用-。 关键字low、high指代变量中最小和最大的非缺失值。 用 排除或指代某些范围。 other是给其他没列在VALUE中的变量分配格式。Q 10The following SAS program is submitted: data WORK.RETAIL; Cost=$20.000; Discount=.10*Cost; run;What is the resultA. The value of the variable Discount in