You are on page 1of 62

生态学统计分析方法与实践

郝彦宾

中国科学院研究生院
§3.4 文件操作语句
1. INFILE 语句
格式: Infile “ 数据文件名”;
该语句可从外部读入 ASCⅡ 码文本文件中的数据。
选项:
LS=n 只读打开文件前 n 列上的数据。
OBS=m 只读打开文件前 m 行上的数据。
MISSOVER 可以识别缺失数据 ( 认定“ .” 为缺失)。
DLM ( Delimiter ) =“ 数据分隔符”
有时所处理的数据处在 CARDS 语句之后,而不是在
外部文件中,可以定义一个专门的逻辑文件名,即
CARDS 。例如:
Data new;
Infile cards missover;
Input x y z; /*missover 不能和 @@ 同用 */
Cards;
123
45
789
Proc print;
Run;
2. PUT 语句(了解)
① 格式: PUT 语句说明;
可以把内容输出到 LOG 窗口或 FILE 语句定义过的输出文件中
。语句说明包括:
变量说明 指出要输出的变量名。
‘ 字符串’ 指明 put 所输出的字符串。
控制指针
Sas4-ex/put.sas
② 格式化输出: PUT variable format.
3. FILE 语句(了解)
格式: FILE 文件名 选择项‘
定义一个外部文件作为当前输出文件,用 put 语句将数
据输出到该文件。
文件名: file 文件逻辑名; file “ 全路径文件名”;

选择项:
LINESIZE= 值;规定输出页每一行的最大列数。
PAGESIZE= 值;规定输出页每页的行数( 20-500 )。
NOTITLES ;规定在输出页上不打印标题行。
4. SET 语句 *
格式: SET 数据集名(数据集选项 ) [SET 语句选项 ] 。
从一个或几个已存在的 SAS 数据集中读取观测值。
 数据集选择项
OBS=n 指出 SAS 要处理的最后的观察值个数。
FIRSTOBS=n 指出从第 n 条观察值处理。
DROP= 变量名 在处理中去掉这个变量。
KEEP= 变量名 在处理中保持这个变量。
POINT= 变量名 用于建立一个数值型变量,这个变量在使
用前必须赋值,它的值用来指明输入数据集中所要处理的
观察值号。
END= 变量名 此变量的值用于作为文件结束标志,初始值
为 0 ,读完最后一个观察时,其值为 1.
常见用途
① 数据集的复制。
“DATA new; SET old;” 把数据集 old 复制到
new 中 。
② 生成含部分变量的数据集的子集。
“DATA small; SET big (keep=x y z);”
③ 数据集的合并。
Sas4-ex\set2.sas
数据集 newa

数据集 newb
5. MERGE 语句
格式: MERGE 数据集表;
将两个或多个 SAS 数据集中的观察值合并成新数据集的单个观察
值。
(1)一对一合并 : 把一个数据集中的第一个观测同另外一个数
据集中第一个观测合并,第二个同第二个合并。新生成的数据
集中观测总数为这些数据集中观测个数的最大值。在合并时,
如果一个数据集中已没有数据,则相应的变量值为缺失值。如
果在几个数据集中有共同的变量,则在合并成新生成的数据集
中只有一个变量,其值为列在 Merge 语句中最后一个含有该变
量的数据集的观测值。
(2)匹配合并:将多个含有部分相同变量的数据集的观察值合并
,就要在语句后用 by 语句,且要求所有要合并的数据集中至少
有一个变量是相同的,且每个数据集都要用这个变量排过序。 b
y 用来标识匹配变量。
Sas4-ex\merger.sas
一对一合并
匹配合并
第四节   SAS 数据集的管理

SAS 处理数据时,对已经建立的数据集希望了解它
的逻辑名、存储路径、数据集中有哪些变量、变量
的类型是什么及有多少个观察值,同时对数据中的
变量进行更名、删除或改变变量值的输出格式等。
DATASETS 过程
 功能:
更改 SAS 数据集中的变量名、输入输出格式或变量的标
记。
 格式:

Proc datasets 选择项;


Append base= 数据集 选择项;
Modify 数据集;
( 1 ) Proc datasets 选择项
library= 库逻辑名 指出被处理的 SAS 库
force 指定强迫更新 SAS 数据集。
( 2 ) APPEND 语句及其选择项
① base= 数据集 指定被追加观察值的 SAS 数据集,必选项。
② data= 数据集 数据集中的观察值要追加到 base= 所数据集的末
尾。
③ force 指定截断功能 , 如果 DATA 数据集中的某些变量在 base 数
据集中不存在,则 Force 强迫删去这些变量。
( 3 ) MODIFY 语句及其子语句
可以改变 SAS 数据集中变量的属性,通过其后的 format,
informat, label 等语句对 SAS 数据集中的变量进行修改。
例如:
Proc datasets library=score;
modify olddata;
format year yymmdd. X1-x10 8.1 x11;
run’;
 Contents 过程
可用来了解数据集中的变量属性(变量名
称、输入输出格式及变量的标记等)及观察
值的个数。
SAS 数据集与其他类型数据文件的转换
( 1 ) EXCEL 工作表
原文件 d:\sascert\beike\excel\myxls.xls
Sas4-ex\importexcel.sas
( 2) 用 TAB 分隔的文本文件
原文件 d:\sascert\beike\txt\mytab.txt

Sas4-ex\importtab.sas
小 结
 文件操作语句: Data, Input, Cards,
Set, Merge, Infile,
 运行语句: Delete, Where, Output
 控制语句: Do, If, Select
 信息语句: Drop, Keep, Format,
Informat
 通用语句: Title , /*…*/ , Footnote,
Libname, %Include, Options , Missing
第五节 SAS 过程步语

 功能
SAS 过程用来调用系统提供的标准过程和统计分析过程,对
指定的 SAS 数据集进行处理,并将结果输出到 OUTPUT 窗
口。一个过程步是一个功能程序模块,调用不同的过程可实
现用不同方法对数据进行分析。
 格式:

Proc 过程名 选择项;


[ 其他相关过程步语句 ;]
Run;
§5.1 SAS 过程中常用语句
1. VAR 语句 *
格式: VAR 变量表
用于列出将参与运算处理的分析变量,各变量之间以空格分隔。
D:\SASCert\beike\sas 例题 \sas4-ex\var.sas
2.FREQ 语句
格式: FREQ 变量
指定一个数值变量,它的值表示工作数据集中观察值重复
出现的频数。
D:\SASCert\beike\sas 例题 \sas4-ex\freq.sas
3.WEIGHT 语句
定义一个加权变量,并以他的值作为观察值的权值。
D:\SASCert\beike\sas 例题 \sas4-ex\weight.sas
4. ID 语句
格式: ID 变量表
规定一个或几个变量,可输出到数据集中,以便在输出的
结果中使用这些变量来识别观察值。
5.OUTPUT 语句 *
格式: OUTPUT OUT= 数据集名 [ 统计关键字 = 变量名 ];
将所在过程的结果输出到一个新的 SAS 数据集中。
Proc means;
Var x y ;
Output out=mydata mean=mx std=stdx;
Run;
6.CLASS 和 BY 语句 *
格式: class variable ; by variable
CLASS :指定一些分类变量, SAS 过程对分类变量的不同
值分别进行分析处理。
BY :分组处理数据集使用,但必须在输入的数据集已按 by
变量排序。
第六节 SAS 服务过程
SAS 服务过程不直接给出统计值,常被用于准备或整理统计资
料。
1. PRINT 过程
格式: PROC PRINT [ 选择项 ];
Var 变量表;语句规定只输出变量表中给定的变量
ID 变量表; 用规定的变量代替观察序号
BY 变量表;指定分组变量
SUM 变量表;对指定的变量求和
SUMBY 变量;当 by 语句中的变量发生变化时对其求和 (必
须已经使用 by 语句)
2. SORT 过程
格式: PROC SORT 选择项;
by 变量表;
语句说明:
Data= 数据集名 指定要进行排序的数据集;
Out= 数据集名 指定一个输出数据集;
Nodupkey 检查并删除具有相等排序变量值的较后
观察值。
3. STADARD 过程
格式: PROC STADARD [ 选择项 ] ; s * ( xi  x)
Var 变量表; x '  M
sx
Freq 变量表; 1 n

Weight 变量表; s x  
n  1 i 1
( x  x ) 2

By 变量; x': 新的标准化值


选择项: s : 是STD  规定的值
Data= 数据集 M : 是MEAN  规定的值
Out= 数据集 xi : 观测值
Mean=m x : 该变量的样本平均值
Std=s s x : 该变量的样本标准差
Vardef=df|N|weihgt 或 wgt|wdf
4. Plot 过程
格式: proc Plot 选择项;
plot 绘图表达式 / 选择项;
By 变量表;
 绘图表达式:

垂直坐标变量 * 水平坐标变量
垂直坐标变量 * 水平坐标变量 =“ 标记字符”
垂直坐标变量 * 水平坐标变量 = 标记变量名
 proc plot 选择项
(1) 输入数据集选项
data= 数据集
( 2 )图形的坐标选项
UNIFORM :当使用 by 语句时,要求对 by 组使用一
致的刻度,以便比较。
NOMISS :把任何变量含有丢失值的哪些观测从散布
图的坐标轴的计算中删除。
( 3 )图形外观的选项
NOLEGEND :不输出每张图顶部列出的作图变量及作
图符号
 BY 语句:
可得到以 by 变量定义的几个观测值分别画出的散布
图,注意:输入的数据集必须已按 by 变量进行排序。
 Plot request - list</option-list>
1.request - list
①Vertical*horizontal
Proc plot;
Plot y*x;
②Vertical*horizontal=‘character’
Plot y*x=‘+’;
③Vertical*horizontal=‘variable’
2. option-list
( 1 )关于坐标轴刻度标记
vaxis= 值表 垂直轴上的刻度标记。如: plot
y*x/vaxis=o to 50 by 10;
Haxis= 值表 水平轴上的刻度标记。
Vref= 值表 画平行于水平轴的直线。
Href= 值表 画平行于垂直轴的直线。
Vrefchar=“ 标记字符” 指定标记垂直轴线的字符。
Hrefchar=“ 标记字符” 指定标记水平轴线的字符。
Vzero(or Hzero): 要求垂直(水平)坐标轴的刻度
标记从 0 开始。
( 2 )关于重叠作图的选项
OVERLAY :定义 Plot 语句里的几个图打印在一张图上。
( 3 )关于做等值线图
CONTOUR
形式:垂直变量 * 水平变量=变量,且等号(=)后面的变
量是数据集中的数值变量。
Plot a*b=z/countour=10 < 后面可用 slist
=‘ character-lsit‘>
5. Chart 过程 ( 自学)
一、方法
( 1 )图形的表示方法
 垂直条形图或垂直直方图( VBAR 语句)

 横条形或水平直方图( HBAR 语句)

 块形图( BLOCK 语句)

 饼形图( PIE 语句)

 星形图( STAR 语句)


( 2 )汇总统计量的选择
 频数( TYPE = FRREQ )

 百分数( TYPE = PCT )

 累计频数( TYPE = CFREQ )

 累计百分数( TYPE = CPCT )

 总和百分数( TYPE = SUM )

 平均值百分数( TYPE = MEAN )


PROC CHART <option-list>;
By variable-list /<option-list>;
VBAR variable-list /<option-list>;
HBAR variable-list /<option-list>;
BLOCK variable-list /<option-list>;
PIE variable-list /<option-list>;
STAR variable-list /<option-list>;;
option-list:
Discrete: 用于分组的选项
Group :用于并排分组的选项
Subgroup :用于分亚组的选项
Sumvar =规定收集对均值、总和、或频数的汇总变量。

You might also like