竞赛:| 全国大学生数模竞赛 | 全国研究生数模竞赛 | 全国大学生电工数模竞赛 | 美国"MCM/ICM" 竞赛 |
 资讯:| 数学理论 | 交叉学科 | 基础教育 | 考研数学 | 学术动态 | 编程交流 | 网络安全 | 经验技巧 |
 下载:| 数 学 篇 | 算 法 篇 | 建 模 篇 | 编 程 篇 | 数 据 篇 | 软 件 篇 | 考 研 篇 | 交叉学科 |
 视频:| 大学数学 | 大学英语 | 计 算 机 | 法律课程 | 政治课程 | 经济管理 | 数学建模 | 高考数学 |
 功能:| 矩阵论坛 | 学校协会 | 挑 战 赛 | 人才招聘 | 数学问吧 | "MC"理工浏览器 | "MCQ"即时通讯 |

 
会员中心
社区论坛
加入收藏
联系我们
您现在的位置: 数学中国 >> 资讯无限 >> 数学理论 >> 数学杂谈 >> 正文
【字体:           ★★
 
SAS复习要点
作者:jiaoshf    文章来源:本站原创    点击数:    更新时间:2006-5-1

SAS复习要点

一、基本概念、程序结构、语句格式与主要过程的一般形式

1.       SAS的子窗口主要有浏览器窗口(EXPLORER)、结果窗口(RESULTS)、程序编辑器窗口(program editor)、日志窗口(log)、输出窗口(output)

2.       切换至日志窗口的命令是log、热键是F6;切换至输出窗口的命令是output、热键是F7

3.       提交SAS程序的命令是submit

4.       SAS系统是大型集成软件系统,具备完备的数据访问、管理、分析和呈现及应用开发功能;

5.       SAS数据集是一类由SAS系统建立、维护和管理的数据文件;

6.       为了实现存储和管理面向对象的开发任务,SAS建立目录册(catalog)类型的文件,在这一类文件中可以存储整个应用系统,包括它的界面,源程序和各种对象间的连接;

7.       SAS逻辑库是一个逻辑概念,一个逻辑库就是存放在同一文件夹或几个文件夹中的一组SAS文件;

8.       SAS软件系统的信息组织中,总共只有两个层次:SAS逻辑库是高一级的层次,低一级的层次就是SAS文件本身;

9.       SAS系统中,为便于访问一个SAS文件,要为该SAS文件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名,在指定逻辑库名后,就可使用两级命名的方式引用SAS文件:逻辑库名.文件名;

10.   在每个SAS进程一开始,系统就自动地指定了一些逻辑库供用户使用,它们是WORKSASHELPSASUSER

11.   在每个SAS进程开始时系统缺省地创建名为workSAS逻辑库,它是一个临时逻辑库,在引用WORK库中的SAS文件时,可省略逻辑库名;

12.   永久逻辑库是指它的内容在当前SAS进程结束时仍被保留的SAS逻辑库,在SAS系统中除了库名为WORK以外的逻辑库都是永久库;

13.   Sashelp包含所安装SAS系统各个产品有关的SAS文件,运行安装的SAS系统所需要的SAS文件缺省地存储在这个逻辑库中;

14.   Sasuser包含为满足用户需要而特制的SAS文件,用户的一些设置也放在Sasuser逻辑库中;Sasuser也是存放为您个人使用而创建的文件的合适场合;

15.   库引擎是规定系统用什么格式向逻辑库读写文件的内部指令;

16.   由于SashelpSasuserWork是系统自动设定的,这些逻辑库名是不能删除的;

17.   一个SAS数据集是一个包含两个组成部分的文件:一个描述部分和一个数据部分。某些SAS数据集也另外包含一个索引文件;

18.   SAS数据集的变量属性信息包括变量的:名称(name)、类型(type)、长度(length)、输出格式(format)、输入格式(informat)和变量标签(label);

19.   SAS编程前必须明确以下三个方面:什么是输入的或供操作的数据、要对输入的数据进行什么加工、期望的输出结果是什么;

20.   每个SAS程序是由许多完成单个动作的程序步和一些设定环境的语句构成的;

21.   数据步(data step):读入源数据文件和SAS数据集,修改、编辑或创建SAS数据集或文本文件;

22.   过程步(proc step):面向SAS数据集,完成某个特定的计算、分析和呈现的功能;

23.   每个语句是由一个关键词开始,并以分号结束,通常就用开始的关键词命名这个语句;

24.   DATA语句和PROC语句分别标志数据步和过程步的开始,RUN语句或另一个程序步的开始标志程序步的结束;

25.   指定逻辑库名的语句的一般形式为:libname 逻辑库名 '库的实际地址'

26.   在程序编辑器窗口提交语句: libname 逻辑库名 list;可以在log窗口显示该逻辑库的连接;

27.   多个物理位置指定同一个逻辑库名的一般形式为:libname 逻辑库名(物理位置1 物理位置2);

28.   指定逻辑文件名语句的一般形式为:filename 逻辑文件名 '文件位置'

29.   查看SAS逻辑库的属性和内容的一般写法为:proc datasets lib=逻辑库名;

run

30.   查看SAS数据集的属性的一般写法为:proc contents data=数据集名;

                                         run

31.   输出数据集的数据部分的一般写法为:proc print data=数据集名;

run

32.   转换文本数据文件的数据步的一般形式为:data 数据集名;

infile 文件名;

input 变量输入设定;

                                         run

33.   input语句的一般形式为:input 指针控制 变量名 输入格式

34.   指针控制@n表示从第n列开始读入,+n表示将列控制指针增加n列后读入;

35.   程序数据列PDV包含两个自动生成的(临时)变量:_N__ERROR_,它们可以在程序中使用,但不作为观测的一部分写入数据集;

36.   retain语句的一般形式为:retain 变量名<初值> 变量名<初值>

37.   在数据步执行的每次循环中,retain语句指定的变量不再从新初始化,保留它以前存储的结果;

38.   求和语句的一般形式是:变量名+表达式;在求和语句中加号前后的项有不同的作用,一个是累加的变量,另一个是相加的表达式,两者位置是不能互换的;

39.   函数LAGDIF调用的一般形式为:LAG(变量名)DIF(变量名);函数LAG的返回值是上一条记录中该变量的值,函数DIF的返回值是当前记录中变量值减去上一条记录中该变量的值;

40.   实现将加工结果存为文本格式的数据步程序的一般形式为:data _Null_

                                                        数据读入语句组;

                                                        数据加工语句组;

                                                        file 文件名<选项>

                                                        put 变量写入设定;

                                                        run

41.   过程import的作用是实现将PC格式数据文件、以固定字符为字段分隔符的文本文件转换为SAS数据集;

42.   DROPKEEP语句的作用是实现对生成数据集的变量进行删减;

43.   在数据步的加工过程中,可使用IF语句选择要保留的观测,其一般形式为:IF 表达式;

44.   临时变量FIRST.*它在BY 变量每个值的第一条记录时为1,否则为0;临时变量LAST.*它在BY变量每个值的最后一条记录时为1,否则为0

45.   过程PRINT的一般形式为:proc print data=数据集名 选项;

id 变量1 变量2

var 变量1 变量2

sum 变量1 变量2

by 变量1 变量2

pageby 变量1 变量2

run

46.   过程FORMAT可以设定用户自己的输出格式,对变量的不同值或不同范围的值以设定的不同的‘标签’来显示,其一般形式为:PROC  FORMAT

                                           VALUE 格式名 范围1='标签1'

                                                         范围1='标签1'

                                                        

                                           run

47.   汇总信息最常用的就是各个变量取值的分布(取各个值的频数和百分数)和一些常用的描述统计量;

48.   SAS中计算频数分布和描述统计量最常用的过程是FREQMEANS

49.   FREQ过程的一般形式为:proc freq data=数据集;

tables 变量1<*变量2> 变量3<*变量4>

weight 变量名;

format 变量1 输出格式 变量2 输出格式

                           run

50.   mean过程的一般形式为:proc mean data=数据集 <统计量关键字>

var 变量1 变量2

class 变量1 变量2

freq 变量;

weight 变量;

output out=数据集 统计量关键字=<变量名列>…/autoname

                           run

51.   使用过程TABULATE制作一个报表,必须确定:什么是分类变量、什么是分析变量、计算什么统计量、用怎样的表格展示结果;

52.   过程tabulate的基本形式为:proc tabulate data=数据集<选项>

                                class 变量1  变量2

                                var 变量1  变量2

table <<页表达式,>行表达式,>列表达式选项>

run

53.   keylabel语句可对过程tabulate制作表格中的统计量名称进行更改,类似于变量标签的设定;

54.   制作散点图使用的过程是gplot,它的最简单的用法为:proc gplot data=数据集;

plot 纵轴变量*横轴变量;

run

55.   在过程gplot中,控制表示点的符号和点间连线的是symbol语句;

56.   完成关于坐标轴的修饰是AXIS语句;

57.   在一个过程步中制作多幅图形,可有以下几种做法:使用BY语句、在PLOT语句中提出多个纵横轴组合、在过程步中使用多个PLOT语句;

58.   PLOT语名可按第三个变量的不同值分别绘制连线并置于同一幅图上,这一用法的一般形式为:PLOT 纵轴变量*横轴变量=第三变量选项;>

59.   过程GCHART制作汇总图的一般形式为:proc gchart data=数据集;

                                          图形名 分类变量选项>

                                        run

60.   PLOT过程中绘制柱状图、饼图的语句是HBARVBARPIE,其选择分析变量和统计量的选项为:SUMVAR=变量名 TYPE=统计量;

61.   使用过程GCHART制作柱状图时,对每个柱的花纹和颜色进行设定是通过pattern语句实现的;

62.   UNIVARITE过程的功能比FREQ过程的功能更强,UNIVARITE过程除了能够统计频数、各种百分比之外,还可以统计均值、标准偏差等描述性统计量以及图形显示;

63.   UNIVARITE过程的一般形式:proc univariate data=数据集 freq plot

var 变量表;

run

64.定义宏变量的一般形式%let 变量名=值;

65.引用宏变量格式为&宏变量名;

66.在数据步中生成宏变量调用 symput()函数;

67.调用宏程序采用%宏名称;

68.使用%include读入宏定义;

69.在程序中宏变量被引用的效果为用宏变量的值直接替代宏变量名,这一过程也称之为解读;

70.相关分析过程为proc corr

71.线性回归分析过程为proc reg

72logistic回归采用过程proc logistic

73.方差分析采用过程proc anova

74.从外部导入数据的过程为proc import

75.从SAS导出数据的过程为proc export

二、考试题型:填空题、选择题、程序阅读题

三、阅读程序

(一)P82 习题56并熟悉代码

(二)阅读下列程序并对语句作出注释

1proc import datafile="c:\myfiles\Accounts.xls"
     out=sasuser.accounts sheet="Prices";
     getnames=no;
run;
 
   /*************************************/
   /* print part of the new data set    */
   /*************************************/
proc print data=sasuser.accounts(obs=10);
run;
并对每个语句进行注释

 

2data admit;
   input ID $ 1-4 Name $ 6-19 Sex $ 21 Age 23-24
         Date 26-27 Height 29-30 Weight 32-34
         ActLevel $ 36-39 Fee 41-46;
   format fee 6.2;
   datalines;
2458 Murray, W      M 27  1 72 168 HIGH  85.20
2462 Almers, C      F 34  3 66 152 HIGH 124.80
2501 Bonaventure, T F 31 17 61 123 LOW  149.75
2523 Johnson, R     F 43 31 63 137 MOD  149.75
2539 LaMance, K     M 51  4 71 158 LOW  124.80
2544 Jones, M       M 29  6 76 193 HIGH 124.80
2552 Reberson, P    F 32  9 67 151 MOD  149.75
2555 King, E        M 35 13 70 173 MOD  149.75
2563 Pitts, D       M 34 22 73 154 LOW  124.80
2568 Eberhardt, S   F 49 27 64 172 LOW  124.80
2571 Nunnelly, A    F 44 19 66 140 HIGH 149.75
2572 Oberon, M      F 28 17 62 118 LOW   85.20
2574 Peterson, V    M 30  6 69 147 MOD  149.75
2575 Quigley, M     F 40  8 69 163 HIGH 124.80
2578 Cameron, L     M 47  5 72 173 MOD  124.80
2579 Underwood, K   M 60 22 71 191 LOW  149.75
2584 Takahashi, Y   F 43 29 65 123 MOD  124.80
2586 Derber, B      M 25 23 75 188 HIGH  85.20
2588 Ivan, H        F 22 20 63 139 LOW   85.20
2589 Wilcox, E      F 41 16 67 141 HIGH 149.75
2595 Warren, C      M 54  7 71 183 MOD  149.75
;
run;
 
   /*************************************/
   /* select observations and variables */
   /*************************************/
data subset1;
   set admit;
   if fee>= 124.80 & sex = 'M';
   keep id name age weight;
run;
   /*************************************/
   /* subset data, perform processing,  */
   /* and subset variables again        */
   /*************************************/
data subset2(keep=id sex kgweight);
   set admit(drop=name date);
   if actlevel='LOW' and age>40;
   KgWeight=height/2.2;

run;

并对每个语句进行注释 。

3data color;
   input Region Eyes $ Hair $ Count @@;
   label eyes='Eye Color'
         hair='Hair Color'
         region='Geographic Region';
   datalines;
1 blue  fair    23  1 blue  red      7  1 blue  medium  24
1 blue  dark    11  1 green fair    19  1 green red      7
1 green medium  18  1 green dark    14  1 brown fair    34
1 brown red      5  1 brown medium  41  1 brown dark    40
1 brown black    3  2 blue  fair    46  2 blue  red     21
2 blue  medium  44  2 blue  dark    40  2 blue  black    6
2 green fair    50  2 green red     31  2 green medium  37
2 green dark    23  2 brown fair    56  2 brown red     42
2 brown medium  53  2 brown dark    54  2 brown black   13
;
run;
   /*************************************/
   /* create simple frequency tables    */
   /*************************************/
proc freq data=color;
   tables eyes hair;
   title1 'Simple Frequency Tables';
run;
 
   /*************************************/
   /* create a crosstabulation table    */
   /* and an output data set            */
   /*************************************/
 
proc freq data=color;
   weight count;
   tables eyes*hair/out=freqcnt outexpect
          sparse;
   title1 'Crosstabulation Table';
run;
 
   /*************************************/
   /* print the output data set         */
   /*************************************/ 
proc print data=freqcnt noobs;
   title2 'Output Data Set from PROC FREQ';
run;
 
   /*************************************/
   /* clear any titles in effect        */
   /*************************************/ 
title;

并对每个语句进行注释 。

4libname sales 'c:\salesdata\sas\2002'; 
   /*************************************/
   /* create new data set from raw data */
   /*************************************/
data sales.quarter1;
   length Department $ 7 Site $ 8;
   input Department Site Quarter Sales;
   datalines;
Parts   Sydney  1 4043.97
Parts   Atlanta 1 6225.26
Parts   Paris   1 3543.97
Repairs Sydney  1 5592.82
Repairs Atlanta 1 9210.21
Repairs Paris   1 8591.98
Tools   Sydney  1 1775.74
Tools   Atlanta 1 2424.19
Tools   Paris   1 5914.25
;
run;
   /*************************************/
   /* print new data set                */
   /*************************************/
proc print data=sales.quarter1;
run;
 
   /*************************************/
   /* print existing data set           */
   /*************************************/
proc print data=mylib.productsales;