SAS学习

本文是一份全面的SAS学习教程,涵盖了SAS数据类型、模块介绍、工作空间、安装与环境、编程语法、数据集创建、数据分析模块等内容。详细讲解了数据步和过程步的语法,包括运算符、函数、控制语句和各种过程,适合初学者和进阶者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一讲、SAS课程介绍


一、数据类型

a. 横截面数据集(cross-sectional data set):即给定时点对个人、家庭、企业、国家或一系列其他单位采集的样本所构成的数据集(应该忽略细小的时间差别)

b.时间序列数据集(time series data set)

c.混合横截面数据集(pooled cross section data set)

d.综列数据集(panel data set)

二、SAS模块介绍

Base SAS: 

  1、数据管理功能

  2、基础统计计算功能

  3、报表生成和图形显示功能

SAS/STAT 统计分析

SAS/INSIGHT 数据探索

SAS/ASSIST 面向任务的易学易用模块

SAS/ETS 时间序列处理

SAS/OR 运筹学和工程管理

SAS/QC 质量控制

SAS/IML 矩阵运算

SAS/GRAPH 绘画

SAS/AF 面向对象编程(OOP)的应用开发工具,拓展SAS的功能

SAS/EIS 面向对象编程的开发工具,用于开发企业信息系统

SAS/ACCESS 数据访问 

SAS/TOOLKIT 扩充工具,把用其他软件编写的程序转化成SAS的组成部分

SAS/Warehouse Administrator 数据仓库管理

SAS/Enterprise Miner 数据挖掘

SAS/Text Miner 文本挖掘

SAS/SHARE 数据库的并发式控制专门软件

SAS/CONNECT 使各平台SAS系统进行分布式处理,从而有效利用各平台机器资源

SAS/GIS 地理信息系统与空间数据的显示分析

SAS/SPECTRAVIEW 数据可视化分析工具,用几何成像的方式来分析多维数据

SAS/Intrnet 提供构建基于SAS的企业内部网络支持

SAS/FSP 快速数据处理的交互式菜单系统

SAS/CALC 功能完善的多维电子表格软件

SAS/ENGLISH 提供利用自然英语获取信息的能力

SAS/SECURE 网络传输加密

SAS/OLAP SERVER 多维数据存储及汇总结果呈现

SAS/GENETICS: SAS公司的第一个科学研究应用软件,应用于遗传学,有5个分析过程

SAS/High-Performance Forecasting:提供快速高效的预测结果

SAS/C, SAS/C++ 针对IBM大型机的开发工具SAS/LAB 向导式的数据分析软件,特别针对day-to-day类型数据

三、SAS工作空间

程序窗口(PROGRAM EDITOR)运行记录窗口(LOG)输出窗口(OUTPUT)

第二讲、SAS系统的安装,SAS运行环境的界面


1、界面介绍

2、Fill values 功能

3、Extract 功能

4、Edit/windows/tool菜单使数据探索色彩缤纷(注意选项设置) 

5、打开分布、拟合、多元等的窗口之后主菜单Tables、Graphs、Curves菜单才被开放。 

Fly,insurance数据集示例

其他功能: 

   1、分布(输出大多数常用的统计量) 

   2、拟合(回归分析) 

   3、多元(方差分析)

第三讲、Insight模块


第四讲、SAS编程的基本语法


一、SAS程序的书写格式

1、SAS程序由语句组成,语句用分号结束;

2、 SAS语句可以从某一行的任意位置开始;3、几个SAS语句可以写在同一行上,但每句要使用分号;

二、SAS程序的书写格式

1、SAS程序由语句组成,语句用分号结束;

2、 SAS语句可以从某一行的任意位置开始;

3、几个SAS语句可以写在同一行上,但每句要使用分号;

4、一个语句也可以写成几行,只要语句中的单词不被断开就可以。在一个语句中各个单词之间至少要有一个空格;

5、SAS程序中一般不区分大小写(字符串中要区分大小写);

6、用 /*注释的内容*/ 来对程序进行注释;

三、SAS程序的结构

1、SAS数据集 样本(观测、记录)、变量(字段、域)、表(数据集)、 数据库;
2、许多SAS语句都是以关键词开始并用它识别语句的类型(如data、input、proc);
3、绝大部分的SAS语句都可分为两步: DATA步和PROC步;

4、变量属性(名称、类型、长度、输入格式、输出格式、标签)

类型:数字型、字符串型 输入

格式:数据被SAS读取的格式

输出格式:数据呈现给人们的格式

data oranges;
     input variety $ flavor  texture looks;
	 /*total=flavor+texture+looks;*/
	 total=flavor+texture+looks;
	 label total="总数";
	 cards;
navel  9 8 6
temple 7 7 7
valencia 8 9 9
mandarin 5 7 8
;

proc sort data=oranges;
  by descending total;
  run;
proc print data=oranges;
  var _numeric_;
 /* var _character_;*/
  title '对ORANGES数据集的品尝检验结果';
run;<span style="font-size:24px;">
</span>

四、SAS文件及命名

1、SAS数据集文件(后缀为sas7bdat)
2、SAS程序文件(后缀为sas)
3、SAS日志文件(后缀为log)
4、SAS输出文件(后缀为list)
5、临时数据集和永久数据集 
6、SAS文件的2级命名方式:目录.文件名 work目录和其他目录 
7、使用Libname语句创建永久数据集,libname 自建目录名 ‘目录地址’
/*libname zhao clear;
libname _all_ clear;
libname zhao ('e:\data\' 'e:\');
libname zhao v6 'e:\data'*/
libname zhao 'e:\sastemp';
data zhao.aa;
  input a ;
cards;
  1
;
run;


第五讲、建立SAS数据集的5种方法


1、data步自己输入数据建立。Orange例
2、data步利用set 语句建立。Set例
3、从外部调入。Infile例
4、利用“导入数据”功能建立。Id.xls例、data.txt例
5、利用EFI(external file interface)功能导入。Column.dat例、tests.dat例、comma.dat例


第六讲、Analyst分析家模块


1、界面介绍

2、浏览与编辑模式
3、生成示例数据与抽样
4、程序清单
5、假设检验

第七讲、数据步(DATA 步)语法详解(1)


一、SAS运算符(operator例)

算术运算符: + - *     /      **
比较算符: =(EQ)    ^=(NE)    >(GT)     <(LT)      >=(GE)     <=(LE)       in
逻辑算符: &(AND)   |(!)(OR) ^(~)(Not)
其它:><(最小值)     < >(最大值)              ||(!)(连接)

data oranges;
     input variety $ flavor  texture looks;
	 total=flavor+texture+looks;

	 if variety in ('navel','valencia')  			/* in应用 */
     then total=total*10;

	 if (flavor<texture & variety='mandarin')   	/*  & 符号   */
     then total=total*100; 

	 a=flavor<>texture**2; 							/*取小的一个*/
	 b=variety||'.var';								/*连接*/
 
	 label total="总数"; 							/*显示标签 默认为total*/
	 cards;
navel  9 8 6
temple 7 7 7
Valencia 8 9 9
mandarin 5 7 8
;
proc sort data=oranges;
  by descending total;
  run;
proc print data=oranges;
  var _numeric_;
 /* var _character_;*/
  title '对ORANGES数据集的品尝检验结果';
run;

二、SAS程序的结构

1、按机器使用的字符排列次序(ASCⅡ或Unicode)从左到右被比较。
2、两个不等长的字符串被比较时,系统在较短的字符串后自动添上空格
3、在比较符后加冒号,则只比较首字母

三、运算次序

在括弧里的表达式先计算
第一级:**  (+ -)前缀 ^ ><   < >
第二级:*  /
第三级:+ -
第四级:||
第五级:其余比较算符
第六级:&
第七级:|

对于相同优先级的算符,左边的运算先做。但有两个例外:
1.对最高优先级,右边的运算先做
2.当两个比较算符围着一个量时,这个表达式看成是有一个and 出现一样被计算。 如:12<age< 20, 等价于:12<age & age<20

四、SAS函数

1、数学函数:
abs()、max ()、min ()、mod (x, y)、sign (x)、sqrt (x)、 sum ()、 mean ()、
exp (x) 、log (x)、log10 (x)、log2(x) 、sin (x)、arsin (x)
2、截取函数:
ceil (x)、floor (x)、int (x)、round (x,n)
3、字符函数:
index (S, S1)、substr (S , p, n)、scan(S2,n)、upcase(S)、compress(S,S1)
4、日期函数
SAS系统存贮日期值为1960年1月1日到指定日期之间的天数
SAS存贮时间值为从午夜开始到指定时间的秒数
日期时间值存贮为1960年1月1日午夜到指定日期时间之间的秒数
日期时间函数:weekday ( )、day()、month()、qtr()、year()
4、概率统计函数: probnorm (x) n (of X1-Xn)、nmiss (of X1-Xn), var (of x1-xn)、std (of x1-xn)
5、随机数函数: rannor (seed)、ranuni (seed)
Functions例
data bbb;
  input x1-x5 x6 $ date yymmdd15.;
  /*format date yymmdd10.;*/
  *format date weekdate12.;
  x7='o';
  x8='I am a student';
  /*以下是数学函数*/
  a1=max(x1,x2);
  a2=sum(x1,x2);
  a3=sign(x3);
  a4=sqrt(x5);
  a5=mean(x1,x2);
  /*以下是截取函数*/
  b1=floor(a5);
  /*以下是字符函数*/
  c1=index(x6,x7);
  c2=substr(x6,3,3);
  c3=scan(x8,2);
  c4=upcase(x8);
  c5=compress(x6,x7);
  /*以下是时间函数*/
  d1=weekday(date);
  d2=year(date);
  d3=qtr(date);
  d4=day(date);
  /*以下是概率函数*/
  e1=probnorm(0);
  e2=n(of x1-x5);
  e3=nmiss(of x1-x5);
  e4=var(x1,x2);
  e5=std(x1,x2);
  /*以下是随机数函数*/
  f1=ranuni(1);
  
  cards;
1  2   3  5  -6  amazon   2004/9/22
3  5   0  8  0   box      1960/1/2
9  10  -7  9  4  check    1960/1/1
7  6   .  1  8   delete   1959/12/31
-2.5 -2.3 3 1 2  desk     2005/9/29 
;
run;
proc print;
run;

第七讲、数据步(DATA 步)语法详解(2)

文件操作语句
运行语句
控制语句
信息语句

一、DATA步流程

1、DATA语句标志了数据步开始,并指定了数据步结束时要生成的数据集名字。
2、每次读入一行数据,读入后执行数据步中的其它语句,循环数据步读取整个数据。
3、_N_变量表示DATA步已经执行的次数
4、_error_变量值为1时表示程序出错
Flow例
data flow;
  /*put x= y= z= _n_;*/
  input x y;
  z=x+y;
  put x= y= z=;
  put _n_= _error_=;
  cards;
10 20
100 200
1000 2000
;
run;

5、读外部数据时,数据步迭代(即每一次)的开始把变量的值置为缺失值,有几种情况例外:
1、retain语句提到的变量
2、sum语句中创建的变量
3、数组_temporary_中的数据元
4、file和infile语句选项中创建的变量
5、自动变量
6、读sas数据集时,只在第一次迭代时把变量值置为缺失,以后变量保留其值直至新值写入
data flow1;
  put x= y= z=;
  set flow;
  put x= y= z=;
run;

二、文件操作语句

1、DATA语句--选项
DROP选项(不列出某些变量)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值