MOOC武大SAS——第一章作业
学习SAS语言一章,用数据步建立数据集,注意不同类型变量的表示、复制数据集、合并、拆分数据集等操作;用过程步,按指定的要求和格式输出数据。
本次作业需完成并提交3个SAS程序:
1)grade01.sas
2)classBMI02.sas
3)stu_merge03.sas
1.( 30分 )
10名幼儿园小朋友的名字、性别、生日信息,见附件表1。新建一个名为Child数据集,数据集中有四个变量,分别是name,gender,birthday,age,其中变量age是用赋值语句计算出来的每个小朋友的年龄,程序命名为grade01.sas。
关键是计算年龄:
i. 使用函数:intck()——计算,date()——当前日期
ii. 变量age是运算得到,可以不用input进行定义,直接使用
iii. yyddmm10. 与 yyddmms10. 的区别:前者间隔符为短横线,后者为斜线
data c1;
input name$ gender$ birthday yymmdd10.;
cards;
刘明铭 男 2012/11/11
李敏洁 女 2014/3/15
代子清 男 2014/9/20
夏天 男 2013/4/1
郭悦 女 2013/7/25
胡月玲 女 2013/7/20
程彬 女 2014/10/9
杨帆帆 男 2016/10/9
刘进 男 2016/5/10
张思凡 女 2015/8/19
;
run;
DATA Child;
set C1;
b=date();
age=intck('year',birthday,b);
drop b;
run;
proc print;
FORMAT birthday yymmdds10.;
title 'Child';
RUN;
2
( 30分 )
针对SASHELP.CLASS数据集,按如下要求编写程序:
1)复制SASHELP.CLASS数据集,建立新变量BMI,其值为weight/(height*height)*1000,新数据集命名为BMIclass;
2)用proc print过程输出数据集BMIclass中NAME,SEX, AGE,BMI四个变量的观测值,其中,BMI值用FORMAT过程定义输出格式,使得变量BMI输出形式为:
BMI值<18.5 ,输出显示“偏瘦”;
18.5=<BMI值<23.9,输出显示“正常”
BMI值>=23.9,输出显示“偏胖”
3)将数据集BMIclass按性别拆分为二个名为boy、girl的新数据集,新数据集中不需有性别变量,且BMI值的输出格式为6.2,即输出显示到小数点后2位。
程序命名为classBMI02.sas
PROC FORMAT这里报错了,等老师回复我了,再进行修改,别的没有问题。
data BMIclass;
set sashelp.class;
BMI=weight/(height*height)*1000;
keep name sex age bmi;
run;
proc format;
value b low-<18.5='偏瘦'
18.5-<23.9='正常'
23.9-<high='偏胖';
run;
proc print data=bmiclass;
format bmi b;
title 'BMIclass';
run;
data boy girl;
set BMIclass;
if sex='女' then output girl;
else output boy;
drop sex;
format bmi 6.2;
run;
proc print
data=boy;
title 'boy';
run;
proc print
data=girl;
title 'girl';
run;