应用基础实验指导手册文档格式.docx
《应用基础实验指导手册文档格式.docx》由会员分享,可在线阅读,更多相关《应用基础实验指导手册文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
★有关知识★
SAS主界面中有几个常用的工作窗口:
“编辑窗口”用于录入、编辑程序;
“日志窗口”用于显示SAS系统运行信息;
“输出窗口”用于显示运行SAS程序产生的文字输出结果;
……。
SAS主界面上有几个常用的菜单:
有关文件操作的功能都组织在“文件菜单”中,SAS程序的提交运行、已运行过程序在编辑窗口的重新显示等功能组织在“运行菜单”中;
【实验内容之二】
试用编程方法和菜单|工具条方式分别建立用户数据库MyLib和MySas。
SAS主界面中工具条上有“创建新的数据库”工具图标,用于指定“库标识”与实际文件夹之间关联以创建一个逻辑数据库。
用libname语句可以创建、取消逻辑数据库。
LIBNAME语句的一般用法为:
libname数据库名[引擎]库位置;
libname数据库名(库位置1库位置2…);
库位置通常是‘目录的全路径文件名’表示;
引擎为读写数据的格式说明,如v8,v6,xport等。
【实验内容之三】
有10位同学的名字、年龄、体重、身高数据如下表所示;
试用多种手段将这些数据新建为一个存放在MyLib库下的health永久数据集。
health数据集的内容
Name
Age
Weight
Height
Tom
10
40
165
Mike
11
42
160
Jack
46
162
Brown
41
172
Lucy
39
155
Gup
38
166
Lee
9
182
Mary
159
Kate
37
Vencent
将上述程序输入编辑窗口并运行,观察输出结果和日志窗口中的内容。
建立SAS数据集方法有两大类:
一类是批处理式的,即用编程方法等建立数据集;
另一类是交互式的,如在viewtable窗、Analyist、INSIGHT等窗口中,交互录入数据。
【实验内容之四】
记事本stock.txt中存放有code(证券代码)、name(证券名称)、scale(流通盘)、EPS(每股收益)、share(投资组合中所占份额)、price(价格)的数据(以空格分隔),将其读入到SAS临时数据集stock中。
SAS数据步编程的基本结构为:
data数据集名;
infile'
文本格式数据的路径文件名'
;
input变量名表;
cards;
原始数据源
结构1结构2
input语句用于建立数据集的变量并从源数据中读入变量值;
若建立的变量为字符型,则在变量名后带上美圆号$。
【实验内容之五】
试着将SAS数据集stock中的数据导出到Excel表格stock.xls中。
在FILE菜单中的IMPORTDATA和EXPORTDATA子菜单可实现一些常见数据格式的数据文件与SAS数据集之间的转换。
实验二“通过编程建立SAS数据集
(1)”
基本掌握编程建立SAS数据集的方法,熟练运用input语句的4种基本输入模式以及混合模式。
有一个文本格式数据文件ex21.dat,其每行数据中含有工号(id)占前5位、姓名(Name)从第7-14位、部门号(dep)占据第1-2位、体重(weight)占据第16-19位,其部分数据如下:
13011zhangsan52.8
02021wangwuzi64.3
10005xuxiake55.0
试用列输入模式将其读入从而建立数据集dem21。
对数据字段位置固定的源数据,用input语句读入数据时,可按列模式输入,其一般形式为:
input变量名1[$]开始列数-结束列数[变量名2…];
有一个文本格式数据文件ex22.dat,其内各行依次含有id(工号)、birthday(生日)、marryday(结婚纪念日)、salaray(薪水)四变量,其部分数据如下:
10007:
31:
6831jul98$21,456.20
10107/21/6721jul97$30,234.85
10205-22-6622may96$15,876.
试用格式化输入模式将其读入从而建立数据集dem22。
对数据字段位置固定的源数据,也可以采用格式化的输入模式更灵活地建立SAS数据集。
一般形式:
input指针控制变量名输入格式名[…];
适用范围:
源文件中各变量所在位置必须是规则的(字段宽度固定);
可用指针控制变量读入的始点,终点由输入格式确定;
每个变量按输入格式读入指定的长度;
该模式特点与列模式基本类似,但可读入多种格式的数值字段,尤其在输入日期型数据时应使用该模式。
有一个文本格式数据文件ex23.dat,其内各行依次含有id(学号)、name(姓名)、age(年龄)、score(成绩)四类数据,彼此间空格分隔,其部分数据如下:
021496001张三丰21596
012256021司马相如22612
991034099王小二25498
试用列表输入模式将数据读入从而建立数据集dem23。
对分隔符(通常为空格)固定的数据源,可以采用自由列表模式输入数据。
一般形式为:
input变量名[$][…];
/*变量长度默认8,超过会截断*/
其中,变量名指明数据集中要建立的变量,它们出现的顺序必须与数据源中的数据字段顺序匹配。
一般情况下,变量的长度默认为8个字节,这对字符型变量而言,只能存放8个字符(4个汉字)。
length语句可改变变量的长度属性,一般形式为:
length变量名表[$]长度.;
另外,为突破变量的默认长度限制,也可以在列表输入模式中还可以加入输入格式修饰说明,一般形式为:
input变量名:
[$]输入格式.[…];
通过DATA步内编程来建立一个由姓名(name)、学号(id)、生日(birthday)、性别(sex)、总分(score)组成的SAS数据集,并输出数据集。
原始数据(不能改变其格式)部分如下:
乔本鬼太狼84/09/01601.8id=001sex=男
龟田次一郎82/12/23588.7id=002sex=男
山本美智子87/01/18623.3id=003sex=女
张美萍85/04/30589.6id=018sex=女
王晓刚84/09/11578id=021sex=男
杨英82/11/19587.9id=034sex=女
当源数据文件中的数据字段里包含字段名时,往往需要采用命名模式输入较为方便。
INPUT[指针]变量名=[$][...][@|@@];
INPUT变量名=[$]始列[-终列][.小数位][@|@@];
INPUT[指针]变量名=informat.[@|@@];
对一些复杂的非标准的源数据文件,各数据字段需要不同的读入模式才能正确匹配,这时可在input语句中混合使用各种读入模式。
但注意,在混合模式中,命名模式必须出现在最后。
上题中如要计算每人的年龄(age),应如何修改程序?
利用date()、time()等函数获取系统日期和时间。
例如:
dt=date();
te=time();
也能利用sysdate、systime系统宏变量获取日期时间。
dd="
&
sysdate"
d;
tt="
systime"
t;
用SAS函数INTCK(int,from,to)可以计算from到to两个日期之间的间隔数int,当int取“year”时,则计算的是间隔年份。
实验三“SAS数据步编程建立数据集
(2)”
能综合运用数据步编程的各种输入模式以及SAS函数,较熟练地将非规则的原始数据、多种数据格式准确地读入SAS数据集;
熟悉常用的SAS函数,如系统日期时间函数、随机数发生器函数、对数/指数/三角/求和/差分等数学函数。
编辑程序计算1989年5月1日('
01MAY89'
d)与2000年7月1日('
01JUL00'
d)之间相隔的天数,并输出在日志窗中。
用SAS函数INTCK(int,from,to)可以计算from到to两个日期之间的间隔数int,当int取“day”时,则计算的是间隔天数。
日期常数可用'
ddmmmyy'
d形式表示,其中ddmmmyy是date7格式的数据。
用金融函数(终值=compound(初值,.,复利率,期数);
复利率=compound(初值,终值,.,期数);
)计算在1980年7月1日存入1000元,年利率为1.25%,到2000年7月1日的终值,并输出在日志窗中;
若要在20年内获得本利和共2000,则年复利率应达到多少?
用SAS金融函数compound可以计算资金的终值或利率。
一般使用格式为:
终值=compound(初值,.,复利率,期数);
复利率=compound(初值,终值,.,期数);
要建立一个含变量课程(course)、教师(teacher)、学生(student)、学号(id)、成绩(score)的数据集。
根据原始数据的2种不同情况,请分别编程:
⑴:
MathLiMing
WangFang150195
EnglishZhangJun
GeMing154389
ChineseChenHong
HeFei162884
⑵:
StatisticsYangHui
HeFei162884。
①RETAIN语句使其中的变量为保留变量,即在数据步的每次循环时,不被重新初始化。
(有点类似C中的静态变量