全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3188 1
2010-11-10
跟crakman做sas base认证试题http://crackman.net/
1.The following SAS program is submitted:
  data WORK.TOTAL;
     set WORK.SALARY;
     by Department Gender;
     if First.<_insert_code_> then Payroll=0;
     Payroll+Wagerate;
     if Last.<_insert_code_>;
  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. Gender
     B. Department
     C. Gender Department
     D. Department Gender

Answer: A

本题考察的是:first.var和last.var这两个知识点。 本题的意思,数据集SALAR已经按照department 和gender排序,
现在计算每一个department下每一个gender的某一个变量值的累积和。
根据本题的意思,写了一个模拟程序:
data crackman;
input department $ gender $ salary@;
datalines;
market f 6000
market m 5000
market f 5500
market m 8000
market f 6000
market m 7000
sales  f 6000
seles  m 4000
sales  f 6000
seles  m 4000
sales  f 6000
seles  m 4000
;
proc sort data=crackman;
by department gender;
run;
data result;
set crackman;/*1*/
by department gender;
if first.gender then subtotal=salary;/*2*/
else subtotal+salary;/*3*/
if last.gender;/*4*/
run;/*5*/
这个DATA RESULT 部分程序执行的过程是这样(不是编译过程):/*我把执行的语句分为标记1 2 3 4 5*/
1.1--2--4--1(先读数据---判断first.gender是否为1,第一个肯定是1------所以直接跳过else到if last.gender,last.gender=0所以---set crackman,继续读数据)
2.1--2--3--4--1
3.1--2--3--4--5--1(因为是第三个了,所以last.gender=1 然后到run,输出到result.
后面都是一样。
这里第三条语句其实===subtotal=subtotal+salary,只是这里简写了,体现程序的简洁性,但是对于入门同学来说增加了可读性的难度。
二维码

扫码加我 拉你入群

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

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

全部回复
2010-11-10 22:07:26
goodman。。。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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