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; if Last.;
2、run;The SAS data set WORK.SALARY is currently ordered by Gender within Department.Which inserted code will accumulate subtotals for each Gender within Department?A. GenderB. DepartmentC. Gender DepartmentD. Department Gender答案:A 本题知识点:自动变量在SAS读取数据时,在PDV过程中会产生很多自动变量,在输出的数据集中是不可见的。 FIRST.VARIABLE:同一个B
3、Y变量(组),若新的变量值第一次出现时,其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,18,12,
4、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 correctly
5、produces the desired output?A. 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; proc
6、 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 dollar
7、6.; 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-Week5 d
8、ollar6.; 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 Week1-Week
9、5 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 the
12、variable X?A. 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 displays
15、 the NORTH worksheet?A. 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 a
16、ppears 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
17、named 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 exam
18、ple 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 ar
19、e 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 R
20、ecommended Readings.摘自De-Mystifying the SAS LIBNAME Engine in Microsoft Excel: A Practical Guide Q 5Which statement specifies that records 1 through 10 are to be read from the raw data file customer.txt?A. infile customer.txt 1-10;B. input customer.txt stop10;C. infile customer.txt obs=10;D. input c
21、ustomer.txt stop=10; 答案:C本题知识点:INFILE的选项FIRSTOBS=常数,要求从指定的行开始读取数据, 而不是从文件的第一个记录开始。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
22、=Jan then output WORK.JANUARY; 104 Sales=Cost * Num_Sold; 105 keep=Product Sales; - 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
23、KEEP statement to correct the errors in the LOG?A. keep=(Product Sales);B. keep Product, 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语句)、过程步。其中,varia
24、ble(s)是具体变量,不能是数组、_N_、_ERROR_等。 Q 7Which of the following choices is an unacceptable ODSdestination for producing output that can be viewed in Microsoft Excel?A. MSOFFICE2KB. EXCELXPC. CSVALLD. WINXP答案:D本题知识点:ODS输出Most of these destinations are designed to create output for viewing on a screen or fo
25、r printing.The OUTPUT destination creates SAS data sets. The MARKUP destination is 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
26、as separated by tags. The DO CUMENT destination, on the other hand, allowsyou to create 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 S
27、AS program that created the data. With an output document,you can also rearrange, duplicate, 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 Departmen
28、t.The following SAS program is submitted: data WORK.TOTAL; set WORK.SALARY(keep=Department MonthlyWageRate); by Department; if First.Department=1 then Payroll=0; Payroll+(MonthlyWageRate*12); if Last.Department=1; run;Which statement is true?A. The by statement in the DATA step causes a syntax error
29、.B. The statement Payroll+(MonthlyWageRate*12); in the data step causes a syntax error.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 W
30、ORK.SALARY data set.答案:C本题知识点:类似第1题 Q 9data course;input exam;datalines;50.1;run;proc 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 exam?A. FailB. PassC. 50.1D. No output答案:C本题知识点:PROC FORMAT语句
31、PROC FORMAT;VALUE namerange-1=formatted-text-1;range-2=formatted-text-2;range-n=formatted-text-n;若name为字符串设计格式,则必须在开头加$,长度不超过32字节;name不能以数字结尾,除了下划线外,不能含其他的任何特殊字符。在range右侧文本可达到32767字节。 变量值是字符串要加引号。 range是多个值,要用逗号。 连续的要用-。 关键字low、high指代变量中最小和最大的非缺失值。 用 排除或指代某些范围。 other是给其他没列在VALUE中的变量分配格式。 Q 10The fol
32、lowing SAS program is submitted: data WORK.RETAIL; Cost=$20.000; Discount=.10*Cost; run;What is the result?A. The value of the variable Discount in the output data set is 2000. No messages are written to the SAS log.B. The value of the variable Discount in the output data set is 2000. A note that co
33、nversion has taken place is written to the SAS log.C. The value of the variable Discount in the output data set is missing. A note in the SAS log refers to invalid numeric data.D. The variable Discount in the output data set is set to zero. No messages are written to the SAS log.答案:C本题知识点:标准数据、以及数据类
34、型的自动转换非标准数据 含逗号的数值,如:1,00,001; 包含美元符号、十六进制、压缩十进制的数据; 日期是最普通的非标准数据。标准数据 数字0-9 英文句号 科学计数、E +、-如果字符型变量转换后不能作为标准数值读入,被转换成的字符型变量有格式要求,必须进行显式转换。Q 11Given the existing SAS program: proc format; value agegrp low-12 =Pre-Teen 13-high = Teen; run; proc means data=SASHELP.CLASS; var Height; class Sex Age; form
35、at Age agegrp.; run;Which statement in the proc means step needs to be modified or addedto generate the following results:Analysis Variable : Height N Sex Age Obs Minimum Maximum Mean - F Pre-Teen 3 51.3 59.8 55.8 Teen 6 56.5 66.5 63.0 M Pre-Teen 4 57.3 64.8 59.7 Teen 6 62.5 72.0 66.8 -A. var Height
36、 / nobs min max mean maxdec=1;B. proc means data=SASHELP.CLASS maxdec=1 ;C. proc means data=SASHELP.CLASS min max mean maxdec=1;D. output nobs min max mean maxdec=1;答案:C本题知识点:PROC MEANS过程PROC MEANS ;语句;RUN; data=:数据集maxdec=:指定输出结果的小数位数,默认为7位noprint:禁止结果在OTPUT窗口输出alpha:设定可信区间的水平,默认为0.05 MAX、MIN、MEAN、
37、MEDIAN、N、NMISS、RANGE、STDDEV、SUM若不加统计关键词,默认打印的顺序:非缺失值个数(N)、均值(MEAN)、标准差(STDDEV)、最小值(MIN)、最大值(MAX)。 语句若在PROC MEAN过程中没有其他语句,默认输出所有观测值和所有数值变量的统计量。BY:分变量单独分析,数据必须先按变量顺序排序,即PROC SORTCLASS:分变量单独分析,不用排序VAR:指定使用的数值变量Q 12The Excel workbook QTR1.XLS contains thefollowing three worksheets: JAN FEB MARWhich stat
38、ement correctly assigns a library reference to the Excel workbook?A. libname qtrdata qtr1.xls;B. libname qtr1.xls sheets=3;C. libname jan feb mar qtr1.xls;D. libname mydata qtr1.xls WORK.heets=(jan,feb,mar);答案:A本题知识点:LIBNAME语句格式LIBNAME librefSAS-data-library ;Q 13The following SAS program is submitt
39、ed:data WORK.TEST; set WORK.MEASLES(keep=Janpt Febpt Marpt); array Diff3 Difcount1-Difcount3; array Patients3 Janpt Febpt Marpt;run;What new variables are created?A. Difcount1, Difcount2 and Difcount3B. Diff1, Diff2 and Diff3C. Janpt, Febpt, and MarptD. Patients1, Patients2 and Patients3答案:A本题知识点:数组
40、与其他编程语言的数组相比不同在于,SAS数组的每个元素都对应一个变量名。 数值型数组数组说明中的初始值可省略,默认为缺失值。数组说明中变量可省略,变量名默认为数组名+序号。序号从1开始。ARRAY test(3)Math Chinese English (0,0,0);数组元素的个数由变量个数决定。ARRAY test(*) test3-test8;二维数组,数组元素按行排列。ARRAR x(2,2) x11 x12 x21 x22; 字符型数组字符型数组药指定数组元素的最大长度,其他与数值型数组相同。ARRAY test(2) $ 10 mathor father; 临时数组若SAS数组每个
41、元素不对应变量名,即为临时数组。这与其他编程语言相同。ARRAY test(3) _TEMPORARY_ (0,0,0);临时数组只用于中间计算,不保存入数据集。在数据步中,临时数组在数据步隐含循环中能自动保留上一步得到的值。Q 14Which of the following programs correctly invokes the DATA Step Debugger:A. data WORK.TEST debug; set WORK.PILOTS; State=scan(cityState,2, ); if State=NE then description=Central;run;
42、B. data WORK.TEST debugger; set WORK.PILOTS; State=scan(cityState,2, ); if State=NE then description=Central;run;C. data WORK.TEST / debug; set WORK.PILOTS; State=scan(cityState,2, ); if State=NE then description=Central;run;D. data WORK.TEST / debugger; set WORK.PILOTS; State=scan(cityState,2, ); if State=NE