全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1603 0
2010-11-15
Given the SAS data set SASUSER.HIGHWAY:

Steering Seatbelt Speed Status   Count   
-------- -------- ----- ------- -----   
absent    No        0-29   serious     31   
absent    No        0-29   not       1419   
absent    No        30-49 serious    191   
absent    no        30-49 not       2004   
absent    no        50+    serious    216   

The following SAS program is submitted:

proc sql noprint;     
     select distinct   
        Speed [_insert_SQL_clause_]     
     from SASUSER.HIGHWAY      
     ;
quit;

title1 "Speed values represented are: &GROUPS";
proc print data=SASUSER.HIGHWAY;      
run;

Which SQL clause stores the text 0-29,30-49,50+ in     
the macro variable GROUPS?   


A.into &GROUPS   

B.into :GROUPS   

C.into :GROUPS separated by ','   

D.into &GROUPS separated by ','

本文属于博客:http://crackman.net/ 版权归作者所有,欢迎转载!如有转载,请务必注明出处!未经本文作者同意不得用于商业应用。
此题考察的是SQL与宏的结合。
用SQL语句产生宏变量,语法结构如下:
PROC SQL NOPRINT;
SELECT column1<,column2,...>
INTO :macro-variable-1<,:macro-variable-2,...>
FROM table-1 | view-1
<WHERE expression>
<other clauses>;
QUIT;

下面这个语法结构是将一变量的多个值组合在一个宏变量里面,例如:
General form, SELECT statement with INTO clause for combining values into one macro variable:
PROC SQL NOPRINT;
SELECT column1
INTO :macro-variable-1
SEPARATED BY ‘delimiter1’
FROM table-1 | view-1
<WHERE expression>
<other clauses>;
QUIT;

回头看看题目的要求:如何将这个文本“ 0-29,30-49,50+”放在一个宏变量&GROUPS中?
显然是采用第二个语法结构。
答案为C。

示例程序:
data crackman;
input Steering $ Seatbelt $ Speed $ Status $ Count@;
datalines;
absent    No        0-29   serious     31   
absent    No        0-29   not       1419   
absent    No        30-49 serious    191   
absent    no        30-49 not       2004   
absent    no        50+    serious    216
;
run;
proc sql;
select distinct speed into:groups separated by ',' from crackman;
quit;
%put _all_;

大家可以思考一些,这里创建的宏变量是全局宏变量还是局部宏变量,这两者之间的差别是什么?
二维码

扫码加我 拉你入群

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

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

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群