第2章 sas编程简介及简单统计分析
第2章 SAS编程基础

最常见,系统按照语句自身顺序进行解释执行。 如: data file1;
input mane$ 1-8 age sex$ height weight ; cards ; Zhang ji 28 m 1.75 60 Li ming 27 f 1.72 58 Wang jie 31 f 1.80 65 ; PROC print ; Run ;
19:02 25
SAS程序中的运算与表达
SAS表达式
用操作符将常量、变量、函数等连接起来进行运算, 最终会产生一个值(表达式的值)。
运算优先级:算术 > 比较 > 逻辑
19:02
26
sas程序的基本结构14sas系统中的常见过程sas程序的基本结构过程名作用输出结果print显示数据集的变量名及变量值变量变量值sort对指定变量进行排序对指定变量进行升降序排列means对数值型变量进行描述性统计分析均值标准差极值等univariate对数值型变量进行描述性统计分析常见统计量t检验分位数极端值freq对定序变量进行描述性统计分析累计频数频率等chart对指定变量绘制文本形式的图形饼图直方图星形图gchart在graph窗口中对指定变量绘图饼图直方图星形图15e程序program由sas语句组成的集合称sas程序
例如:计算1~100之间所有奇数之和。
编程如下: 结果如下:
20
SAS程序的结构化编程语句
2)当循环:
语法: do while (继续循环条件表达式) ; …; end;
例如:计算1~100之间所有偶数之和。 编程:
结果:
21
SAS程序的结构化编程语句
3)直到循环:
语法: do until (退出循环条件表达式) ; …; end;
第二章[SAS编程基础]
![第二章[SAS编程基础]](https://img.taocdn.com/s3/m/65357f160b4e767f5acfce7c.png)
第二章 SAS 编程基础第一节常量、变量与观测值2.1.1 观测值描述单一整体,如个别人、一个实验动物、一年、一个地区某些特性的一系列数据值称为观测值,又称观察。
2.1.2 变量给定特性的数据值的集合组成了变量。
在SAS数据集中,每一个观测值是由各个变量的数据值组成。
在数据集中每一列数据是一个变量。
1.命名SAS变量名和其他名称如数据集名等的命名规则都相同,它可以多至8个字符长,第一个字符必须是字母(A,B,C,….,Z),或者是下划线(_),后面的字符可以是数字或下划线。
空格不能出现在SAS名中,特殊字符(如$,@,#)也不允许在SAS名中使用。
SAS 系统保留了一定的名称作为特殊的变量名,这些名称以下划线开始和结尾。
如_N_和_ERROR_等。
2.变量特性SAS变量有两种类型,数值型和字符型。
字符型变量在名后用一“$”号来表示。
除了他们的类型外,S A S变量还有下列特性:长度、输入格式、输出格式和标记。
变量的长度特性,是指在SAS数据集中用以存储它的每一个值的字节数。
缺省长度是8(为了存储长度与缺省值不同的变量,需使用LENGTH语句)。
变量的特性,或者明确地说明,或者在它们首次出现时的上下文中给出定义。
例如:DATA A;C='BAD';PUT C;C='GOOD';PUT C;RUN;C在第一次出现时已被定义成字符型变量,长度为3,因此第二次再向c中赋值GOOD时,由于c已被定义成长度为3,故c中只存有‘GOO’。
PUT语句的作用是把变量的值输出到LOG窗口。
变量的其他特性将在后面逐渐介绍。
3.变量清单的简化表示在SAS程序中定义了完整的变量清单后,就可以在后面许多语句中使用缩写变量清单形式。
名称形式缩写意义形如:X1,X2,…Xn的带有序号的名称X1-Xn 从X1到Xn的所有变量形如 X P A * 的名称范围X-A 从X到A的所有变量X-NUMERIC-A 从X到A的所有数值变量X-CHARACTER-A 从X到A的所有字符变量特殊SAS名称_NUMERIC _ 所有数值变量_CHARACTER _ 所有字符变量_ALL _ 所有变量例如:INPUT NAME $ VARl VAR2 VAR3 VAR4 VAR5 VAR6;也可以写成:INPUT NAME $ VARl一VAR6;注意字符型变量NAME不包含在这个缩写清单中,有序号的变量不必全部列出,这些变量要求类型相同,或全是数值型的或全是字符型的。
第2章_SAS编程简介

SYSDAY
SYSTIME SYSLAST SYSDSN SYSVER SYSSCP
本次SAS启动的星期
本次SAS启动的时间 最新创建的数据集名字 最新创 建的 数 据集两 部分 名字 使用SAS软件的版本 返回用户主机系统的缩写
如Thurday
如 15:41 如chap2.example2_4 如chap2 example2_4 如9.2 如Liurong
数据步中基本语言介绍
(4)分支结构
IF语句 SELECT语句
用法一: SELECT(选择表达式); WHEN(值列表一) SAS语句1; … WHEN(值列表K) SAS语句K; … OTHERWISE 语句N; END;
示例程序: select(Judge); when(1,5) Type="谷物类”; when(2,7) Type=”蔬果类"; otherwise Type= "其他类"; end;
第2章 SAS编程简介
主要内容
SAS程序简介 SAS函数 ODS 输出系统 SAS宏
SAS程序简介
(1)SAS程序构成:
数据步——将用于分析的外部数据整理成SAS数据集 过程步——对SAS数据集进行调用、进行各类数据统计分析源自(2)SAS程序的基本规定:
SAS程序以西文状态下的“;”作为结束符(注意:不能使用中文分号“ ;”)。 SAS程序命令中一般不区分大小写字母(注意:仅在作为数据的字符串 中区分大小写)。 数据步和过程步各自包含若干条语句,多条语句可写在一行,但建议每 条语句单独分行从而使程序具备较好的可读性。
宏引用: &宏变量名
SAS宏
宏变量示例:
%Let data=example; /*注意,example代表指定分析的数据集,若打印不同的数据集,更改此 处即可*/ Proc print data=&data; /*第一次引用宏*/ Var name height weight; Title "Display of Data Set &data"; /*第二次引用宏*/ Run ;
2SAS编程简介2

SAS程序由数据步和过程步构成, 程序由数据步和过程步构成, 程序由数据步 构成 数据步(Data Step)的设计灵活多样, 数据步( )的设计灵活多样, 过程步(Proc Step)的设计比较规范, 的设计比较规范, 过程步 的设计比较规范 我们先重点介绍SAS系统数据步(Data 系统数据步( 我们先重点介绍 系统数据步 Step)编程。 )编程。
– – – 以字母或下划线开头。 由字母、数字、下划线构成。 应用中不区分大小写英文字母。
每个SAS语句都必须以半角分号“;”作为结束符。 语句都必须以半角分号“ 作为结束符 作为结束符。 每个 语句都必须以半角分号 SAS数据步语句以 数据步语句以DATA关键字开头,以RUN语句结尾。 关键字开头, 语句结尾。 数据步语句以 关键字开头 语句结尾 DATA步中可以使用 步中可以使用INPUT、CARDS、INFILE、SET、 步中可以使用 、 、 、 、 MERGE等语句指定数据源,也可以用赋值、分支、循 等语句指定数据源, 等语句指定数据源 也可以用赋值、分支、 环等程序流程控制语句实现复杂情况处理, 环等程序流程控制语句实现复杂情况处理,完成复杂数 据结构的输入和数据准备。 据结构的输入和数据准备。
窗口内容保存----激活窗口后
– 在命令行(窗)键入 file “路径\文件名” 在命令行( 路径\ 路径 文件名” – 点击图标 – 在file下拉菜单中选“save ”或“save as file下拉菜单中选 下拉菜单中选“ as” 或
二、SAS程序和SAS数据集
常用的快捷键 –F4 recall命令 用于edit 命令, edit窗 F4 recall命令,用于edit窗,将前面提交的程序 调回, 调回,可多次使用 –F5 切换到edit edit窗 F5 切换到edit窗 –F6 切换到log log窗 F6 切换到log窗 –F7 切换到output output窗 F7 切换到output窗 –F8 submit命令 F8 submit命令 –Ctrl-E 清除当前窗口的内容。 edit窗被清除的内 Ctrl清除当前窗口的内容。 edit窗被清除的内 Ctrl 容不能用F4 F4调回 容不能用F4调回
SAS编程简介

语句的功能与特点: 输入值严格按指定列号顺序获取。 字符型数据中可镶嵌空格,数据最长为200个 字符 。 缺失值可用空格补齐。 例如: INPUT NAME $ 1-12 SEX $ 13 AGE 14-15 ;
2) 自由格式 : 格式:INPUT 变量名1[$] 变量名 2[$] ……… 变量名n[$] ; 语句的功能与特点: 数据项之间要至少用一个空格分隔 。 字符型数据中间不能有空格,且最长为200个 字符 。 用小数点‘ . ’表示数值型数据的缺失值 。 每个字段变量要按顺序排列 。
2.2 SAS DATA步简介
使用向导实现数据的导入和导出
– SAS可以利用FILE菜单上的import命令将其他 格式的数据文件导入SAS系统,创建SAS自己 的数据集。 – 可以导入的数据文件格式有:
• dBase数据库,EXCEL工作表,LOTUS的数据库, 纯文本的数据文件等
2.2.3 DATA步中的常用语句
3) 格式输入: 格式:INPUT 指针控制 变量输入格式描述符 ; 指针控制: @ N 指针转向第N列 ; (绝对 移动) + N 指针向右移N列 ; (相对移动) 常用SAS变量输入格式描述符说明: W. :宽度为 W 位标准数字,应用实例: 8. ,指数 值型数据长为8个字符,且小数点位为零位。 W.D :含小数点的标准数字,数字总长度为W位, 其中包括小数点占1位,小数占D位,以及正负符 号占一位,所以所描述数据的整数部分的位数最 多为W-D-2 位。应用实例: 10.3 ,效果为 523458.356 。
5) 组格式输入: 组格式输入语法格式: INPUT (变量1-变量N ) (输入格式描述符); 例a: INPUT (x1-x5) (4.) ; /*变量x1-x5最 多为4位整数*/ 例b: INPUT (aa bb ) ($8. ,7.2 ) ; (变量aa为8位长的字符型数据,变量bb为7位长, 且小数为2位的数值型数据) 例c: INPUT (Name price1-price6 ) ($12. 6*8.1); (变量Name为12位长的字符,price1-price6共6个变 量均为8位长的数值,小数为1位)
第2章 sas语言基本概念

第2章 SAS语言概述 章 语言概述
变量的属性( 变量的属性(续) 2.4.1 变量类型:数值型变量的值是数值。 变量类型: 字符型变量是以字符串为其值。一个字 符型变量的值最多可达200个字符。 2.4.2 变量的长度是指在数据集中存储其 变量的长度 值的字节数,默认值是8。 2.4.3 变量的格式标号是赋给变量一显示 输出的符号串(可以是汉字) 输出的符号串(可以是汉字)。
第2章 SAS语言概述 章 语言概述
2.4 变量的属性
SAS变量 变量分为数值型与字符型。每个变量都具 变量 有长度、 输入输出格式和标号等四种属性。
变量属性 类型 长 度 输 入 格 式 输 出 格 式 数值 字符 数值 字符 数值 字符 标号 0-40个字符 见有关INFORMAT/ FORMAT语句的章 节 可能值 数值或字符 3-8字节 1-200字符 默认值 数 值 8字节 LENGTH/ATTRIB 8字符 w. $w. w. FORMAT/ATTRIB $w. 空 格 LABEL/ATTRIB INFORMAT/ATTRI B 定义语句 LENGTH/ATTRIB
SAS输出窗口 GRAPH窗口
SAS程序中数据流向示意图
第2章 SAS语言概述 章 语言概述
数 据 行
DATA one; INPUT a b x y; CARDS; 1 2 3 4 5 6 7 8 ; PROC RUN; PRINT;
第2章 SAS语言概述 章 语言概述
ASCII码文件 码文件
DATA two ; INFILE ” c:\work\ a.dat ”; INPUT a b x y ; PROC PRINT ; RUN ; 保存在C盘的work 子目录下的数据 文件a.dat: 1 2 3 4 5 6 7 8
SAS笔记第二章,编程概述

2014.5.17 data语句(通过data语句简单输入数据)data a.k;input total math chineseenglish;cards;243 80 81 82246 81 82 83249 82 83 84;procprint;run;结果如图:注:data a.k;input total; math; chinese; english;/*当输入变量名中含有;时,cards语句要变成cards4 而且在数据下面不再是单个; 而是四个;;;;*/cards4;243 80 81 82246 81 82 83249 82 83 84;;;;procprint;run;结果如图:Data语句中输入符号变量,需在input语句的变量名后面加$符号。
data a.l;input name$ math chineseenglish;cards;张三80 81 82李四81 82 83王五82 83 84;procprint;run;结果如图:如若在input语句后的变量名没有加$符号,但是在数据集中又输入符号变量,则会出现:Input语句后面的变量名如果在变量名的后面再加数字,则表明该变量所占据的列数。
data a.m;input name$ 1-2 math$ chineseenglish;/*表示name变量占据第1,2列,后面同理*/cards;张三80 81 82李四 81 82 83王五82 83 84;procprint;run;结果如图:(一般跟在input语句后面变量名的后面或format语句后面)下面介绍一些常用的格式输入:W. :表示宽度为w位的数字。
W.D :表示带有小数点的标准数字。
例8.2:如-1234.56 。
其中负号和小数点各占一个位。
$W :表示字符串为W位。
Commaw.d:表示与W.D的用法类似,不过在数据输出时数字的格式是美式的,即三个数字之间空格隔开。
SAS统计应用基础(第二讲)共4讲

2.SELECT…WHEN语句 2.SELECT…WHEN语句
语法格式:
SELECT (表达式); WHEN(数值1) 执行语句A; WHEN(数值2) 执行语句B; … OTHERWISE 执行语句Z; END;
语法格式:
SELECT; WHEN (条件1) 执行语句A; WHEN (条件2) 执行语句B; … OTHERWISE 执行语句Z; END;
Data temp; Input varx $ vary varz; Datalines4; 24;77 195 177 24;31 220 213 24;56 173 166 24;12 135 125 ;;;;
4. INFILE语句
主要功能:指定一个包含原始数据的外部文本文件,从而使得
数据步可以从这一文本文件读入数据块。
④在较长的程序段前后加上空行、注释语句等以突出分段。
2.1.4 SAS程序的运行
菜单方式:run →submit
SAS程
序的调 用方式
ቤተ መጻሕፍቲ ባይዱ
直接按F8键 单击工具栏“小人右跑” 按钮
注:如果选中某一段程序,然后运行,则系统只执行被选择部分。 该功能在调试程序时非常有用。
2.1.5 SAS程序中的注释
使长程序清晰易读的方法: 1.在相应程序段考虑使用空行分隔; 2.使用注释加以说明 SAS中的注释方式有两种格式: SAS中的注释方式有两种格式: 中的注释方式有两种格式
建议编写SAS程序遵循以下规则: 建议编写SAS程序遵循以下规则: SAS程序遵循以下规则
①除非特别长的语句,每个语句尽量只占一行。如必须要 占多行,从第二行起使用缩进格式以突出语句结构。 ②所有数据步和过程步均主动加上“run;”语句作为结束。 其 第一个语句和最后的RUN语句由第一列开始书写,其他 语句按程序的逻辑结构层次遵循缩进格式书写,以使得 程序结构更为清晰。 ③尽量只使用小写字母。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DATA步中的常用语句
1. 赋值语句与表达式 格式为:变量名 = 表达式; 例如:avg=(math+Chinese+English)/3; isfcat = (sex='f'); y=Log(x)**2;newprice = .; 其中第一个赋值语句用一个公式计算平均分数。 第二个表达式利用逻辑运算生成一个取值为0或1 的变量,当性别变量“sex”的值为f时,计算结 果为1,否则为0。第三个表达式使用对数函数和 乘方运算。第四个表达式给变量赋了缺失值。注 意:数值型变量的缺失值为点“.”,字符型变量 的缺失值为空格“ ”。
格式说明就不需用列方式,列方式与格式方式只 能选其一,不能两者同用。 例: INPUT NAME $12. @14 SEX $ +2 AGE 2. @25 SALE COMMA10.2 ;
DATA步中的INPUT语句
日期数据格式: SAS系统日期数据以1960年1月1日为起始日,系统以距 离起始日期的总天数记录实际日期。例如1962年3月20日被 存储为809,表示此日期与1960年1月1日相距809天。所以, 当变量的值为日期类型或时间类型时,用户必须规定变量的 输入和输出格式。 例如1997年12月20日,可用下列日期格式表示: MMDDYY6. 月日年6位 例: 122097 MMDDYY8. 月日年8位 例: 12/20/97 或12-20-97 或 12201997 DDMMYY6. 日月年6位 例: 201297 YYMMDD6. 年月日6位 例: 971220 DATE7. 日月年7位 例: 20DEC97 DATE9. 日月年9位 例: 2ODEC1997 MMDDYY10. 月日年10位 例: 12/20/1997 或 12-20-1997
SAS过程步简介
3.BY语句 BY语句在过程步中用来指定一个或几个 分组变量,根据这些分组变量值可以把观测 记录分组,然后对每一组观测分别进行指定 的分析。在使用带有BY语句的过程步之前, 应先用SORT过程按BY语句指定的变量对数据 集排序。
例:假设我们已经把class1数据集按性别排序,则 下面PRINT 过程可以把男、女生分别列出:
DATA步中的INPUT语句
$W.:长度为W的标准字符串,应用实例: $12. ,指字符串长度为12位。 COMMAW.D :长度位为W的数字,其中小数点 占一位,小数部分占D位,正负号占一位, 数据的整数部分每3位有一个逗号分隔符, 逗号也占字符串宽度。应用实例: COMMA12.1 ,效果为:63,145,690.5 。 $CHARW. :宽度为W,含有空格的字符串。有
DATA步中的INPUT语句
高级输入格式控制描述符: 行保持标示符 @ 和 @@ @ :CARDS语句中的数据一行为一条观测记录,用多 条INPUT语句读入。 @@:CARDS语句中的数据一行为多条观测记录,用 一条INPUT 语句读入。 / : 从下一行第一列开始读数据。 #N :指明从第N行开始读数据 。
例2.3 数据步中所有的INPUT语句完成一个观测记 录的数据输入(程序Data2_3.sas) DATA A ; INPUT NAME $ AGE ; /* 此语句应改写为 : INPUT NAME $ AGE @ ;*/ INPUT WEIGHT ; CARDS ; ZHANG 23 75.6 XIAO 12 32 WEI 14 30 ; RUN ; PROC PRINT ; RUN ;
Data步语句说明:
1. SAS处理的数据可分为:字符型、数值型 两大类,日期型数据属于数值型。 2. 字符型变量名后必须使用$说明符。 3. 每行数据的行尾不能有分号“;”,但数据 行 结束后的”;”分号必须单独占一行。 4. 变量名不分大小写。
例2.1 data2_1.sas
DATA CLASS ; INPUT NAME $ 1-11 SEX $ AGE HIGHT WEIGHT ; CARDS; ZHANG HONG F 18 176 75 WANG XING M 19 163 55 LI NING F 17 169 70 ; /*分号必须单独占一行 */ RUN ;
DO UNTIL (循环退出条件) ; 循环体语 句……; END; data dd; x=5; do until(x>50); y=x*x; x=x+1; output;end; run;
SAS过程步简介
SAS过程步的一般形式为: PROC 过程名 [ DATA=输入数据集] [选 项]; ………….. <Var 变量序列;> <Where 过程语句;> <BY变量序列;> RUN;
பைடு நூலகம்ATA步中的常用语句
select (price);/*括号内表达式可以不用*/ When(12,24) put '价格高'; when(3,5,7) put '价格底'; otherwise put '价格不明'; end;
DATA步中的常用语句
6. 循环语句 1)DO循环(又称为计数DO循环) DO 计数变量 = 起始值 TO 结束值 BY 步长; 循环体……; END; 循环体由一个或多个程序语句构成。计 数变量、起始值、结束值、步长应该是相同 数据类型的变量。在一般情况下,当步长大 于0时,起始值应小于结束值;当步长小于0 时,起始值应大于结束值。
例2.2 日期与时间的格式应用:data2_2.sas
DATA DAYS ; INPUT BIRTHDAY MMDDYY8. +1 INDAY MMDDYY8. +1 TESTDAY DATE9.; CARDS; 08-04-83 07/14/90 20SEP1990 11-14-83 07/26/90 20SEP1990 ;
DATA步中的常用语句
if mod(x,2)=0 then do; y=x**3; Ly=Log(x); Output; end; else continue ;
DATA步中的常用语句
2)SELECT语句 SELECT (选择表达式); WHEN(值列表1) 语句1; WHEN(值列表2) 语句2;…… OTHERWISE 语句n; END; 其中“选择表达式”是一个计算结果为数值或字 符 的表达式,“值列表”由一个或者若干项构成,各 项 之间用逗号分隔,每项可以是一个与选择表达式具 有相同数据类型的常量或表达式。“语句”可以是
DATA步中的常用语句
DATA步中的常用语句
DATA步中的常用语句
DATA步中的常用语句
DATA步中的常用语句
DATA步中的常用语句
5.分支语句 SAS系统提供2种实现分支结构控制的语句,IF语句 和SELECT语句。 IF语句 语法格式:IF 逻辑表达式 THEN 语句1;ELSE 语句2; 语句功能:当逻辑表达式的计算结果为真时,执行 语句1,否则执行语句2。
DATA步中的INPUT语句
2)自由格式 :
格式:INPUT 变量名1[$] 变量名2[$]…变量n[$]; 语句的功能与特点: 说明:数据项之间要至少用一个空格分隔。 字符型数据中间不能有空格,且最长为200个字 符 。用小数点‘ . ’表示数值型数据的缺失值 。 每个字段变量要按顺序排列 。
例如: INPUT NAME $ SEX $ AGE ;
Data bb ; do x=100 to 5000 by 50; y = SQRT(x); if y>=50 then CONTINUE; z = Log(x); output ; format x 8.3 y 20.5 z 20.5; end; run; 这个程序对100到5000之间的值每隔50计算一 次平方根,规定变量x,y,z的输出格式分别为8.3、 20.5、20.5 。如果平方根值大于等于50则不计算 不方根,而直接考虑下一个值。
注意:输出的日期格式长度一般应与日期的输入格
式一致。 如输入格式为MMDDYY6. ,输出格式可以是 MMDDYY6. 或MMDDYY8. 。如果输出格式为 MMDDYY10. ,就会产生输出错误。
DATA步中的INPUT语句
4) 组格式输入: 组格式输入语法格式: INPUT (变量1-变量N ) (输入格式描述符); 例a:INPUT (x1-x5) (4.) ; /*变量x1-x5最多为4位整数*/ 例b:INPUT (aa bb ) ($8. ,7.2 ) ; (变量aa为8位长的字符型数据,变量bb为7位长, 且小数为2位的数值型数据) 例c: INPUT (Name price1-price6 )($12. 6*8.1); (变量Name为12位长的字符,price1-price6共6个变 量均为8位长的数值,小数为1位)
DATA步中的INPUT 语句
INPUT 语句具有的四种使用格式: 1) 列标识方式 (COLUMN) 格式:INPUT 变量名1[$] 起始列-终止列 变量名 2[$] 起始列-终止列…变量名n[$] 起始列-终止列; 功能:输入值严格按指定列号顺序获取。 注意:字符型数据中可镶嵌空格,数据最长为200个 字符,字符型变量要跟一个$字符 。 例如: INPUT NAME $ 1-12 SEX $ 13 AGE 1415 ;
DATA步中的INPUT语句
3) 格式输入:
格式:INPUT 指针控制 变量输入格式描述符; 指针控制: @ N 指针转向第N列; (绝对移动) + N 指针向右移N列 ; (相对移动) 常用SAS变量输入格式描述符说明: W. :宽度为 W 位标准数字,应用实例: 8. ,指 数值型数据长为8个字符,且小数点位为零位。 W.D :含小数点的标准数字,数字总长度为W位, 其中包括小数点占1位,小数占D位,以及正负符 号占一位,所以所描述数据的整数部分的位数最 多为W-D-2 位。应用实例: 10.3 ,效果为 523458.356 。