SAS语言 -- 简介

  SAS语言是一种专用的数据管理与分析语言,它提供了一种完善的编程语言。类似于计算机的高级语言,SAS用户只需要熟悉其命令、语句及简单的语法规则就可以做数据管理和分析处理工作。因此,掌握SAS编程技术是学习SAS的关键环节。在SAS中,把大部分常用的复杂数据计算的算法作为标准过程调用,用户仅需要指出过程名及其必要的参数。这一特点使得SAS编程十分简单。

SAS语言 -- SAS语句

  一个SAS语句是由SAS关键词,SAS名字,特殊字符串,并以分号(;)结尾,它要求SAS系统执行一种操作或给SAS系统提供信息。
  如: 

Data grade ;
Do i=1 to n;
Input X Y $10. ;

1、SAS关键词

  许多SAS语句都是以关键词开始并用它识别语句的类型,如DATA,INPUT,PROC和INFILE都被称为关键词。

2、SAS名字

  SAS语句中出现名字地方很多,如变量名、数据集名、格式名、过程名,及作为文件名和库标记的特殊名字。

  SAS名字最多可由8个英文字母构成,第一个字符不能是数字,空格和特殊字符$、@和#也不能用于SAS的名字中。另外,SAS保留了一些特殊的变量名并赋于特定的意义,这些变量都是以下划线开头和结尾,如N_表示数据步已执行过的次数。

3、表达式

  是由一系列算符和运算对象形成的一个指令,它被执行后产生一个目标值。运算对象是变量和常数。
  表达式分为简单表达式(仅用一个算符)和复合表达式(使用多个算符);如:9;Age<1001;LOG(X);EXP(a);a*b/100等。
  SAS常数用来表示固定的值,它或者是一个数字,或者是固定的值,或者是字符串,或者是其它特殊记号。

4、SAS有五种类型的常数

  ①数值常数:就是出现在SAS语句里的数字,完全像通常的数值一样书写,可以包括小数点和负号等;
  ②字符常数:是由单引号括起来的1到200个字符组成的;
  ③日期和时间数值常数;
  ④十六进制数值常数;
  ⑤十六进制字符常数。

SAS语言 -- SAS算符

1、比较算符

  建立两个量之间的一种关系,并要求SAS确定这种关系是成立不成立。如果它成立,输出的运算结果是1;如果不成立,运算结果为0 

2、算术算符

  就是数学运算中常用的五种运算符号

3、逻辑算符

  通常用来连接一系列比较式 

4、运算次序

  下面给出复杂表达式运算次序的准则。
     ①在括号里的表达式先计算。
     ②较高优先级的运算先被执行。
     ③对于相同优先级的算符,左边的运算先做。

SAS语言 -- SAS程序

由一系列SAS语句组成一个SAS程序。SAS程序中的语句可分为两类步骤:DATA步和PROC步。这两个步骤是所有SAS程序的模块。通常用DATA步产生SAS数据集,而用PROC步对SAS数据集内的数据进行分析处理并输出结果。PROC步要求SAS从过程中调出一个过程并执行这个过程,通常用SAS数据集作为输入。
data phones;
input name$ phone room height;
cards;
rebeccah 424 112 1.5648
carol 450 112 5.6235
louise 409 110 1.2568
gina 474 110 1.3652
mimi 410 106 1.6542
alice 411 106 1.6985
brenda 414 106 1.3698
brenda 414 105 1.8975
david 438 141 1.6547
betty 464 141 1.5647
holly 466 140 1.5624
;
proc print data=phones; run;

SAS语言 -- DATA步

  SAS的数据步以DATA语句开始,用于创建和处理数据集。
  DATA语句以关键字“data”开始,格式如下:

data 数据集名;

  例如:data a.case;将创建在库a中名为case的SAS数据集,语句执行后你可在与库a对应的目录下看到刚刚建立的数据集文件case。

  DATA语句所指定的数据集,一般都是以“库名.数据集名”的格式出现的,也可以单独的“数据集名”出现,此时的数据集系统默认为是临时库中的数据集,退出系统后将会被删除;
  直接输入方式:

    就是用SAS语句输入数据来产生SAS数据集的过程,一般形式为:
                 DATA 语句;
                 Input 语句;
                 (用于DATA步的其它语句)
                 Cards;
                 [数据行]
                 ;

  从外部文件读入数据集。数据若已经包含在某个外部文件(文本文件或数据文件)中,可用此方法输入数据到数据集文件中。
  在以上介绍的data语句后,写入以下语句:
      infile ‘外部文件的所在位置及名称’ 选项;
      input 变量名1变量名2 …变量名n;
  infile语句用于从外部文件读入数据,必须出现在input语句之前。它的功能是指定一个包含原始数据的外部文件。
  从已建立的SAS数据集中产生新的数据集。如果用户从已经建立的SAS数据集中抽取部份变量或数据来形成新的SAS数据子集,可在DATA步中通过SET命令来完成。

DATA步语句及其类型

1、文件操作语句

        用于输入数据集或者从这个DATA步输出。

文件操作语句 语句的作用及意义
Data 告诉SAS开始DATA步,并开始创建一个SAS数据集           
Input 描述数据行或外部输入文件上的记录
Cards 标识数据行的开始
Put 描述用SAS输出的这些行的格式
By 规定数据集被分组处理,使用by变量对分组进行定义
Set 从一个或几个已存在的SAS数据集中读取观察
Merge 从两个或两个以上的SAS数据集中合并观察为单个观察
Inflie 识别外部文件,包含DATA步将读入的原始输入数据

2、运行语句

        使得用户可以创建或修改变量,或者选择一部分观测来创建数据集 。

文件运行语句 语句的作用及意义
Delete 从正被创建的数据集中删除观察                                         
Stop 停止产生当前的数据集
Where 在进入DATA步之前选择观察
Output 产生新的观察
Remove 从某个SAS数据集中删除一个观察
Replace 在相同的位置上替代观察

3、控制语句

  对一些确定的观测跳过一些语句,或者改变被执行语句的次序,实现从程序的一部分转移控制到另一部分。

文件控制语句 语句的作用及意义
Do 建立一组语句,它能够作为一个语句去执行
End 标记一个Do组或Select组结束
Select 有条件地去执行几个SAS语句中的一个
Go to 使得SAS跳到本程序步带有标号的语句,并从这里继续执行
If then/else 有条件地执行一个SAS语句

4、信息语句

  给出关于数据集或正被创建的数据集的附加信息,不是执行语句,可以出现在DATA步的任何地方,并且有同样的功能。

文件信息语句 语句的作用及意义
Array 定义一组能够用相同方法处理的变量                                    
Informat 对存储变量值规定输入格式
Format 对输出变量值规定格式
Length 规定用来存储SAS变量的字节数
Label 把描述性标签同变量联系起来
Drop 指出从数据集或分析中被删除的变量
Keep 指出从数据集或分析中被保留的变量
Rename 改变数据集中一些变量的名字

SAS语言 -- PROC过程步

  PROC步总是由PROC语句开始,然后给出运行的SAS过程名字。
  例如,运行SORT过程,则使用语句“proc sort;”来开始这个PROC步。
  通常PROC步只需要包括一个PROC语句给出运行的过程名字和一个RUN语句。

过程名 描述
MEANS 计算基本统计量                                                                  
CHART 制作次数分布表   次数分布图
UNIVARIATE PLOT 正态分布检验 
PRINT  数 据 输 出 
SORT  数 据 排 序 
Tabulate 制作表格 
ANOVA 方差分析 
GLM 协方差分析
CORR  相关系数的计算
REG 直 线 回 归
PRINCOMP 主 成 分 分 析

SAS语言 -- SAS数据集

1、SAS数据集简介

  SAS数据集是关系型结构,分为两个部份:描述部份和数据部份。
    描述部份包含了一些关于数据属性的信息即变量名称、类型及次序等信息;
    数据部份的结构完全等同于我们一般所理解的数据表,SAS数据值被安排在一个矩阵式的表状结构中,由字段和记录所构成,字段就是统计学中研究的变量,而记录就是每个研究对象的观测。

  SAS数据集又包含在SAS数据库的文件集中。SAS数据集是最常用的一种SAS文件类型,SAS数据库还可以包含其它类型的SAS文件

2、SAS中数据库分为永久性和临时性两种。

  永久库:存在于永久库中的数据集是永久存在的(只要你不去删除它);
  临时库:临时库中的数据集则在你退出SAS后自动被删除。
  在Windows操作系统,SAS数据库以路径为基础的组织方式。为了使用SAS数据库,需要为每个SAS数据库指定一个库标记来识别。这一标记又称库逻辑名,是某个文件所在路径的别名。临时数据库的库标记为WORK,在SAS启动后自动生成,结束SAS后,库中的所有文件都被删除。

3、临时SAS数据集的建立

  当启动SAS后,系统自动建立一个临时数据存储区,用来临时存储运行SAS时建立或调用的SAS数据集,临时数据库的库标记为WORK,在SAS启动后自动生成,结束SAS后,库中的所有文件都被删除。临时数据库的库标记不需要标注,即SAS程序中数据集work.abc与abc的表示含义完全相同。

4、永久型SAS数据集的建立和保存

  SAS启动后自动生成临时数据库的库标记,因而不需要专门进行命名,但当退出系统后临时数据库中的数据集会被自动清除。为了能反复多次使用同一数据集,需建立永久型SAS数据集。实际上,建立永久型SAS数据集,就是将SAS数据集储存在数据库逻辑名对应的路径目录下。

5、数据集的导入

  除了通过数据步创建数据集的方法,SAS还提供了一些其他的方式可以用来读入其他格式的数据文件。SAS可以利用【FILE】菜单上的【Import Data】命令将其他格式的数据文件导入SAS系统,创建SAS自己的数据集。可以导入的数据文件格式有:dBase数据库,EXCEL工作表,LOTUS的数据库,纯文本的数据文件等。

6、数据集的导出

  除了导入其它格式的数据文件,SAS系统也可以导出SAS数据集为其它格式的数据文件。SAS可以利用【FILE】菜单上的【Export Data】命令将SAS数据集导出SAS系统,转换为其它格式的数据文件。同样地,可以导出的数据文件格式有:dBase数据库,EXCEL工作表,LOTUS的数据库,纯文本的数据文件等。

7、数据集的排序

  将SAS数据集中的观测(记录)按一个或多个变量的数值大小进行排序,把结果存放在新的SAS数据集里,或者代替原始数据集,以便其它SAS过程通过使用BY语句可以直接调用该数据集。在对数据集进行合并或更新之前,也必须进行排序。SORT过程能完成对数据集的排序。

8、数据集的连接

  数据集的连接就是把几个数据集纵向连接起来,生成逐个尾部追加的合并数据集,或按一个或多个变量排序的新数据集,此过程在DATA步中通过SET语句来完成。
  Set语句从一个或几个已存在的SAS数据集中读取观测值。每一次set语句被执行时,SAS系统读一个观测送到程序数据向量。如果没有其它规定,set语句从输入数据集中读所有变量和所有观测。

9、数据集的合并

  数据的合并是将两个或多个SAS数据集中的观测横向合并成一个新数据集的一个观测。请注意数据集连接和合并的差别:
    SAS系统合并观测的方式依赖于是否有BY语句伴随着MERGE语句;

SAS基础 -- SAS编程入门的更多相关文章

  1. 200-Java语言基础-Java编程入门-004 | Java分支与循环

    一.流程控制语句 可以控制程序的执行流程 在程序开发的过程之中一共会存在有三种程序逻辑:顺序结构.条件分支(选择)结构.循环结构. 顺序结构的定义,即:所有的程序将按照定义的代码从上往下.顺序依次执行 ...

  2. 200-Java语言基础-Java编程入门-005 | Java方法定义及使用

    一.方法概述和格式说明 为什么要用方法: 提高代码的复用性 什么是方法: 完成特定功能的代码块 方法的格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {     方 ...

  3. 200-Java语言基础-Java编程入门-006 | Java数组定义及使用(引用数据类型)

    一.数组概述和定义格式说明 为什么要有数组(容器): 为了存储同种数据类型的多个值 数组概念: 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引 ...

  4. SAS进阶《深入解析SAS》之Base SAS基础、读取外部数据到SAS数据集

    SAS进阶<深入解析SAS>之Base SAS基础.读取外部数据到SAS数据集 前言:在学习完<SAS编程与商业案例>后,虽然能够接手公司的基本工作,但是为了更深入的SAS学习 ...

  5. java基础-网络编程(Socket)技术选型入门之NIO技术

    java基础-网络编程(Socket)技术选型入门之NIO技术 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传统的网络编程 1>.编写socket通信的MyServer ...

  6. 最基础的Python的socket编程入门教程

    最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...

  7. Python编程入门(第3版)|百度网盘免费下载|零基础入门学习资料

    百度网盘免费下载:Python编程入门(第3版) 提取码:rsd7 目录  · · · · · · 第1章 编程简介 11.1 Python语言 21.2 Python适合用于做什么 31.3 程序员 ...

  8. Linux 利器- Python 脚本编程入门(一)

    导读 众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写.大多数人会认为 Bash (或者其他的 shell 语言)用起来很方便,但一些强大的语言(比如 Python)会 ...

  9. 前端利器:SASS基础与Compass入门

    SASS是Syntactically Awesome Stylesheete Sass的缩写,它是css的一个开发工具,提供了很多便利和简单的语法,让css看起来更像是一门语言,这种特性也被称为“cs ...

随机推荐

  1. Linux kernel 内核学习路线

    看了下各位大神的推荐路线,总结如下: 0. 跟着项目走: 1. 学会用.熟练用linux系统: 2. Linux Kernel Development. 3. Understanding the Li ...

  2. 2018.11.3 PION模拟赛

    期望:100    实际:100 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  3. IO与文件读写---Java的IO流架构

    http://www.blogjava.net/pengpenglin/archive/2010/03/03/314239.html#314399 http://www.blogjava.net/jo ...

  4. 学习MarkDown--初体验

    学习MarkDownPad 突然兴趣来了,在博客园里面也有Markdown的格式,昨天晚上安装了MarkDownPad pro这个是免费的,但是有些功能不支持.本来想破解的,百度了很多方法感觉不靠谱, ...

  5. Direct Buffer vs. Heap Buffer

    1. 劣势:创建和释放Direct Buffer的代价比Heap Buffer得要高. 2. 差别:Direct Buffer不是分配在堆上的,它不被GC直接管理(但Direct Buffer的JAV ...

  6. CxImage的编译及简单使用举例

    1.  从http://sourceforge.net/projects/cximage/下载最新的CxImage 702源代码. 2.  解压缩后,以管理员身份打开CxImageFull_vc10. ...

  7. 汝佳大神的紫书上写错了?uva10048

    算法竞赛入门经典第二版的365页例题11-5噪音.应该是"之和"换成"取最大值","取最小值"还是取最小值 假设我错了,请大家务必指点小弟 ...

  8. 解决centos yum安装"No package nginx available."问题

    问题原因: nginx位于第三方的yum源里面,而不在centos官方yum源里面 解决方法: 安装epel(Extra Packages for Enterprise Linux) a.去epel网 ...

  9. C#&.NET高级面试题

    转自http://chaoyouzhuo.blog.163.com/blog/static/1263760012011109114131316/ 1. DateTime.Parse(myString) ...

  10. hdu1507——Uncle Tom&#39;s Inherited Land*

    Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...