【知识】SAS学习笔记(1--2)

(1)SAS基本概念

1. SAS数据集

SAS数据集(SAS Datasets)可以看作由若干行和若干列组成的表格,类似于一个矩阵,但各列可以取不同的类型值,比如整数值、浮点值、时间值、字符串、货币值等等。其逻辑结构如下:

数据集的每一行叫做一个观测(Observation),每列叫做一个变量(Variable)。SAS数据集等价于关系数据库系统中的一个

2. SAS数据库

SAS数据集是各种特殊格式的SAS文件中最重要的一种。另一种重要的SAS文件是SAS目录(Catalog),用来保存各种不能表示成行列结构表格形式的数据,比如系统设置、图象、声音等。多个SAS文件可以放在一起,称为一个SAS数据库(Library)。一个SAS数据库实际是磁盘上的一个子目录(特殊情况下一个数据库可以由几个子目录组成)。为了把库名和子目录联系起来,使用LIBNAME语句。比如,我们在C:\Y1995子目录中保存了几个SAS数据集,可以用如下语句把库名MYLIB与子目录C:\Y1995联系起来:

libname mylib " c:\y1995 "

法二(图形界面操作):

单击新建逻辑库按步骤填写。

有三个预定义的SAS数据库:

1)WORK数据库:临时库,存放在其中的SAS文件叫临时文件,当退出SAS系统时会被自动删除。

2)SASUSER库:保存与用户个人设置有关的文件,它是永久的,即退出SAS时文件不会被删除。

3)SASHELP库:保存与SAS帮助系统、例子有关的文件,是永久的。

临时数据集可以用单水平名,即只有数据集名,如C9501,也可以命名为WORK. C9501。而永久数据集名由两部分组成:库名.数据集名,比如放在MYLIB库中的数据集TEACH必须用MYLIB.TEACH表示。

3 不需编程的SAS应用/INSIGHT模块

选“Solutions - Analysis- Interactive Data Analysis"菜单。SAS/INSIGHT提供了一个类似于电子表格的数据窗口来管理数据集。

INSIGHT模块提供了十分方便的数据探索功能。 在分析菜单栏下直接进行选择操作。

(2)SAS语言构成

SAS语言程序由数据步和过程步组成。数据步用来生成数据集、计算、整理数据,过程步用来对数据进行分析、报告。SAS语言的基本单位是语句,每个SAS语句一般由一个关键字(如DATA,PROC,INPUT,CARDS,BY)开头,包含SAS名字、特殊字符、运算符等,以分号结束。

SAS关键字是用于SAS语句开头的特殊单词,SAS语句除了赋值、累加、注释、空语句以外都以关键字开头。SAS名字在SAS程序中标识各种SAS成分,如变量、数据集、数据库,等等。SAS名字由1到8个字母、数字、下划线组成,第一个字符必须是字母或下划线。SAS关键字和SAS名字都不分大小写。

1.1 SAS表达式

SAS数据步程序中的计算用表达式完成。表达式把常量、变量、函数调用用运算符、括号连接起来得到一个计算结果。

SAS常量主要有数值型、字符型两种,并且还提供了用于表达日期、时间的数据类型。例如

· 数值型:12,-7.5,2.5E-10

· 字符型:'Beijing',"Li Ming","李明"

· 日期型:'13JUL1998'd

· 时间型:'14:20't

· 日期时间型:' 13JUL1998:14:20:32' dt

SAS中用一个单独的小数点来表示缺失值常量。

SAS变量的基本类型有两种:数值型和字符型。日期、时间等变量存为数值型。SAS的数值型变量可以存储任意整数、定点实数、浮点实数,一般不关心其区别。数值型变量在数据集中的存贮一般使用8个字节。SAS的字符型变量缺省的长度是8个字符,但是如果在INPUT语句中输入字符型变量时指定了长度则不受此限制。可以用LENGTH语句直接指定变量长度,LENGTH语句一般应出现在变量定义之前,格式为:

LENGTH 变量名 $ 长度

例如:length name $ 20;

SAS运算符包括算术、比较、逻辑等运算符。

逻辑运算符 = ^= > < >= <= IN

EQ NE GT LT GE LE

IN是一个SAS特有的比较运算符,用来检查某个变量的取值是否在一个给定列表中,比如:

prov in ('北京','天津','上海')

逻辑运算符:&(AND) l (OR) ^(NOT)

连接两个字符串的l l(两个连续的l号)

取两个运算值中较大一个的<>(比如3 <>5结果为5),取两个运算值中较小一个的><

1.2 SAS程序规则

SAS程序由语句构成。每个语句以分号结尾。因为分号作为语句结束标志,所以SAS语句不需要单独占一行,一个语句可以写到多行,也可以在一行连续写几个语句。SAS语言中只要允许用一个空格的地方就可以加入任意多个空白f空格、制表符、回

车,允许用空格的地方是名字周围、运算符周围。

SAS关键字和名字大小写不分,但字符型数据值要区分大小写,比如"Beijing"和"BEIJING"被认为是不同的数据值。

在SAS程序中可以加入注释,注释使用C语言语法,用/*和*/在两端界定注释,这种注释可以出现在任何允许加入空格的位置,可以占多行。

SAS程序包括数据步和过程步两种结构,每一个步是一段相对完整的可以单独运行的程序。数据步用来生成、整理数据和自编程计算,过程步调用SAS己编好的处理过程对数据进行处理。自己用SAS编程序进行计算主要在数据步中进行。

SAS数据步以DATA语句开头,以RUN语句结尾。DATA步中可以使用INPUT,CARDS,INFILE,SET,MERGE等语句指定数据来源输入数据,也可以用赋值、分支、循环等编程结构直接生成数据或对输入的数据进行修改。

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2014-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逍遥剑客的游戏开发

C++的反射和序列化

18720
来自专栏一名叫大蕉的程序员

来人啊给我炸了那个Java虚拟机No.46

你指尖跃动的电光,是我此生不灭的信仰,唯我超电磁炮永世长存。 瞬间爆炸,完成单杀。 深度长文,非常非常长,执行这些程序可能导致机器完全死机,请遵照指示安全开车。...

24490
来自专栏静晴轩

lua表排序

Lua作为一种很强大且轻量级脚本语言的存在,对于掌握其几乎无所不能的Table(其实就是一个Key Value的数据结构,它很像Javascript中的Obje...

515110
来自专栏C#

C#分部类型解析

   等待着元宵节的到来,过完元宵,这个年也算是过完了,也得开始出去挣钱了,过年回家感觉每个人都觉得很牛,只有自己太渣,为了避免年底再出现这样尴尬的局面,还是需...

19860
来自专栏漫漫深度学习路

pytorch学习笔记(十四): DataLoader源码阅读

pytorch 数据加载部分的 接口可以说是现存 深度学习框架中设计的最好的, 给了我们足够的灵活性。本博文就对 pytorch 的多线程加载 模块(Data...

2.3K90
来自专栏信安之路

【读者投稿】格式化字符串漏洞读书笔记

里面讲了简单的printf()实现。这里讲的除了x86-64里的pwn之外的都是32位。

10400
来自专栏用户2442861的专栏

互联网公司笔试常见陷阱

7.   阅读下面代码,程序会打印出来的值是(D)------------------------------(腾讯2014实习生笔试)

25430
来自专栏Core Net

一个插排引发的设计思想 (三) 委托与事件

28180
来自专栏mathor

2018年全国多校算法寒假训练营练习比赛(第一场)大吉大利,今晚吃鸡——枪械篇

 说实话,一开始看到这个题,还以为是动态规划,后来想了一下好像并不存在什么子问题,就是单纯要求个最大值而已,枪的威力由强本身的威力加上配件的加成,那么配件加...

9920
来自专栏nice_每一天

转载 Java设计模式

设计模式; 一个程序员对设计模式的理解: “不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精...

14220

扫码关注云+社区

领取腾讯云代金券