加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sas 数据集基本处理

(2013-01-29 13:57:30)

平宝宝倾情奉献,希望大家能够得到好成绩!!

这是为了其他好朋友们哦,经一的同志们,邮箱里有WORD版,可以自己去下啊!!!

一、    数据集的建立

1.导入Excel数据表的步骤如下:

  1) 在SAS应用工作空间中,选择菜单“文件”→“导入数据”,打开导入向导“Import Wizard”第一步:选择导入类型(Select import type)。

   2) 在第二步的“Select file”对话框中,单击“Browse”按钮,在“打开”对话框中选择所需要的Excel文件,返回。然后,单击“Option”按钮,选择所需的工作表。(注意Excel文件要是2003的!!)

  •      3) 在第三步的“Select library and member”对话框中,选择导入数据集所存放的逻辑库以及数据集的名称。
  •     4 ) 在第四步的“Create SAS Statements”对话框中,可以选择将系统生成的程序代码存放的位置,完成导入过程。

2.用INSIGHT创建数据集

1)启动SAS INSIGHT模块,在“SAS INSIGHT:Open”对话框的”逻辑库“列表框中,选定库逻辑名

2)单击“新建”按钮 ,在行列交汇处的数据区输入数据值

(注意列名型变量和区间型变量,这在后面方差分析相关性分析等都要注意!!)

3)数据集的保存:

  • “文件” →“保存” →“数据” ;
  • 选择保存的逻辑库名,并输入数据集名;
  • 单击“确定”按钮。即可保存新建的数据集。

3.用VIEWTABLE窗口建立数据集

1)打开VIEWTABLE窗口

2)单击表头顶端单元格,输入变量名

3)在变量名下方单元格中输入数据

4)变量类型的定义:右击变量名/column attributes…

4.用编程方法建立数据集

DATA 语句;              

Input 语句;

    (用于DATA步的其它语句)

Cards;                    

 [数据行]

           ;                      

 RUN;                       

 

例子:data=数据集名字mylib.a;

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=whb.phones;       (这一过程步是打印出数据集,可要可不要!)

 run; 

 

*数据集中的框架我会用加粗来显示,大家主要记加粗的,下面的编程部分都是这样!!

二、基本统计分析

  1. 1.   用INSIGHT计算统计量

1)在INSIGHT中打开数据集

在菜单中选择“Solution(解决方案)”→“Analysis(分析)”→“Interactive Data Analysis(交互式数据分析)”,打开“SAS/INSIGHT Open”对话框,在对话框中选择数据集,单击“Open(打开)”按钮,即可在INSIGHT中打开数据窗口

2)选择菜单“Analyze(分析)”→“Distribution (Y)(分布)”,打开“Distribution (Y)”对话框。在数据集的变量列表中,选择分析变量X、分组变量Y。(注意:分组变量就是那种可以区别不同种类的变量,例如地区编号、科目、组号等等,而分析变量一般是需要分析的数据,例如成绩,身高书目)

3)单击“Output(输出)”按钮,在打开的对话框中包含描述性统计量选项。

4)  选择选项矩统计量和分位数,取消默认的选项:“Box Plot/Mosaic Plot”和“Histogram/Bar Chart”,单击“OK”按钮,即可得到变量按分组的各种矩统计量(Moments)和分位数(Quantiles)

*描述性统计选项:Moments 矩统计量    Quantiles分位数

见书P37         Basic Confidence Intervals 基本置信区间

Tests for Location 位置检验  Frequency Counts 频数统计

Robust Measures of Scale 尺度的稳健估计

Tests for Normality 正态性检验

  1. 2.   用“分析家”计算统计量

1)启动“分析家”

   选择主菜单“Solutions(解决方案)”→“Analysis(分析)”→“Analyst(分析家)”,打开“分析家”窗口。

  选择主菜单“File(文件)”→“按SAS名称打开”,打开“选择成员”对话框,选择数据集。

2)通过Summary Statistics菜单计算描述性统计量

 选择主菜单“Statistics(统计)”→“Descriptive(描述性统计)”→“Summary Statistics(汇总统计量)”,打开“Summary Statistics”对话框,选择变量列表中分析变量,单击“Analysis”按钮,选定分析变量

单击“Statistics”按钮,打开“Summary Statistics:Statistics”对话框。对话框中列出可以计算的所有统计量。

3) 通过Distributions菜单计算描述性统计量

选择主菜单“Statistics(统计)”→“Descriptive(描述性统计)”→“Distributions(分布)”,打开“Distributions”对话框,选择变量列表中的分析变量,单击“Analysis”按钮。单击“OK”按钮,即可得到关于分析变量的矩统计量和基本统计测度。

3.用编程方法计算统计量

1)FREQ过程

FREQ过程包括多个控制频数输出与检验的语句和选项,格式如下:

PROC  FREQ  DATA = <数据集>;

  [TABLES <变量1> <变量2> …;]

  [FORMAT <变量1> <输出格式1>.  <变量2> <输出格式2>. …;]

RUN;

其中PROC FREQ语句调用FREQ过程,标志FREQ过程的开始;

TABLES语句用于创建有关变量所构成的各种表格并进行相应的假设检验和计算,可以多次使用。

例如:proc freq data = mylib.sryzc;

          tables R_Id Income;

RUN;

这个语句提供了频数,所占百分数,累计频数,和累计百分数!

2. MEANS过程

MEANS过程的一般格式:

PROC MEANS DATA=<数据集名>[<统计量关键字列表>];

  [VAR <分析变量列表>;]

  [BY <分组变量名>;]

  [CLASS <分组变量名>;]

RUN;

例如:proc  means  data = mylib.sryzc;

         var  Income;

run;

 

PROC MEANS语句后的选项主要用来指定所要计算的统计量,默认情况下,

MEANS过程会给出频数、均数、标准差、最大值和最小值等,其余统计量的计算均需要在选项中指定。

 VAR语句引导所要进行分析的所有变量的列表,SAS将对VAR语句所引导的所有变量分别进行描述性统计分析。

 BY语句与CLASS语句所指定的分类变量用来进行分组统计,但输出格式不同。

 

3. 使用统计量关键字列表

1)        在PROC MEANS语句中使用统计量关键字列表:

proc  means  data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min;

  var  Income;

Run;

关键字

所代表的含义

关键字

所代表的含义

n

有效数据记录数

range

极差

nmiss

缺失数据记录数

skewness

偏度

mean

均值

kurtosis

峰度

std

标准差

t

分布位置假设检验之t统计量

stderr

标准误

probt

上述t统计量对应的概率值

var

方差

q1

第一四分位数

median

中位数

q3

第三四分位数

mode

众数

qrange

四分位数间距

cv

变异系数

p1

第一百分位数

max

最大值

p5

第五百分位数

min

最小值

p10

第十百分位数

sum

总计

p90

第九十百分位数

sumwgt

加权值总计

p95

第九十五百分位数

css

校正平方和

p99

第九十九百分位数

uss

未校正平方和

   

 

2)使用CLASS语句和BY语句

 使用CLASS语句和BY语句可以分组计算分析变量的描述统计量值,由CLASS语句和BY语句指定的变量在分析中起分组(类)的作用,被称为分类变量。两个语句的区别是:

 使用BY语句时要求数据集须按BY变量排序,使用CLASS语句无此要求。

 使用BY语句时输出按BY变量的每个值分别提供一个表,使用CLASS语句则将所有结果排列在一个表之中。

使用BY语句之前先排序,可以在按分组变量统计: (p46)

例如:proc  sort  data = mylib.sryzc;

         by R_Id;

run;

proc  means  data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min;

        var  Income;

  by R_Id;

run;

使用CLASS语句分组较为简单,也可以在按分组变量统计(p47)

proc  means  data = mylib.sryzc n mean median p1 p5 p95 p99 q1 q3 max min;

  var  Income;

  class R_Id;

RUN;

3. UNIVARIATE过程(推荐使用)

  UNIVARIATE过程的一般格式为:

PROC UNIVARIATE DATA = <数据集名>  [<统计量关键字列表>];

  [VAR <分析变量列表>;]

  [BY | CLASS <分组变量名>;]

  [HISTOGRAM <变量名称>/<选项列表>;]

  [OUTPUT OUT = <数据集名> <统计量关键字> = <自定义变量名>;]

RUN;

UNIVARIATE过程和MEANS过程的格式非常相似,相同的语句和选项其含义也相同,所不同的是某些统计量只能在UNIVARIATE过程中计算(如众数),而且UNIVARIATE过程中具有绘图功能。

 其中,HISTOGRAM语句用来指示SAS对其后所指定的变量绘制直方图,其后的选项用来指示SAS添加不同类型的拟合图形(如正态分布的分布密度曲线)。

 

输出包括五个部分:

 第一部分是矩统计量,各统计量已作了介绍。

 第二部分为基本的位置和分散程度统计量,位置统计量包括均值、中位数、众数,分散程度统计量包括标准差、方差、极差、四分位间距

 第三部分为关于均值等于零的三种检验的结果,包括t检验、符号检验和符号秩检验。

 第四部分为各个重要的分位数。

 第五部分是观测数据的五个最低值和五个最高值。

*因为这个编程含有最齐全的结果,大家做一个这个编程,所有的数据就可以自己调了,但是要找到那个对的哦!!

三、程序绘图

1. GCHART过程

(1) 语法格式

PROC GCHART DATA = <数据集名>;

  <图形关键字>  <变量名称>/<选项列表>

RUN;

 GCHART过程可以使用的图形关键字及其所绘制的图形类型见表

图形关键字

绘制的图形类型

图形关键字

绘制的图形类型

block

方块图

pie

饼形图

hbar

水平的条形图

pie3d

三维饼形图

hbar3d

水平的三维条形图

donut

环形图

vbar

竖立的条形图

star

星形图

vbar3d

竖立的三维条形图

   

TYPE =freq |cfreq |pct|cpct|sum|mean 统计图形变量的频数|累计频数|…

Discrete  把数字变量当成离散变量处理

GROUP=变量名  指定并排分组变量

SUBGROUP=变量名  按分组变量的值分段

Patternid=Midpoint|group|subgroup,规定连续性图形的图案按数字列表中的中心点值|并排分组值|重叠分组值的次序呈现

SUMVAR = 变量名(数值变量) 指定要进行统计计算的变量,也就是“TYPE = 统计量关键字”选项中统计量的计算所依据的变量

 

举例啦!!

2)        画条形图(直方图)

例如: proc gchart data = mylib.sryzc; 

           vbar  Income;  (分析变量!)

run;

其中绘图用的变量用VBAR语句给出,如果把VBAR改成HBAR则条形方向变为横向。用GCHART绘制的条形图和在INSIGHT中绘制的直方图有所不同,它在横轴标的是区间的中点值,而在INSIGHT中横轴标的是区间的端点值。

可以指定分组的变量,例如在每个区段内再分段(就可以出现一个条形出现两个颜色哦!!)

proc gchart  data = mylib.sryzc;

vbar  Income / subgroup = R_Id; (前一个是分析变量,后一个是分组变量哦)

run;

3) 画三维条形图

   使用BLOCK关键字可以画三维条形图。例如,画出数据集中Income变量的三维条形图的代码如下:

proc gchart  data = mylib.sryzc;

  block Income/ group = R_Id;  (前一个是分析变量,后一个是分组变量)

Run;

4)画饼形图

 使用PIE关键字可以画饼形图,PIE3D关键字可以画三维饼形图。例如,画出数据集中Income变量的三维饼形图的代码如下:

proc gchart  data = mylib.sryzc;

  PIE3D Income (分析变量哦!!)

run;

 

2.使用GPLOT过程绘制散点图和连线图

1)GPLOT过程的一般格式

PROC GPLOT DATA = <数据集名>;

  PLOT <纵轴变量> * <横轴变量> [= <变量>][/<选项>];

  [SYMBOLn <选项>;]

RUN;

PLOT语句的选项

选项

意义

说明

FRAM | NOFRAM

在图形四周加入或不加入边框       默认为加入

缺省为加入

CFRAM = 颜色

边框内的颜色      默认为白色

缺省为白色

AUTOHREF(AUTOVEREF)

在水平(垂直)轴的每个主刻度处加入水平(垂直)参考线

 

NOAXIS

取消坐标轴及相关的图形元素

 

CAXIS = 颜色

设定轴的颜色

 

CTEXT = 颜色

设定与轴相关字符的颜色

 

HAXIS = 值列举

设定水平轴主刻度的值

 

VAXIS = 值列举

设定垂直轴主刻度的值

 

overlay

多个图共坐标

 

 

 

散点图

绘制家庭总收入对家庭总支出的散点图,代码如下:

proc gplot  data = mylib.sryzc;

    plot  Income*outgo (分析变量哦!)

run;

如果换成这个样子,图像上面会出现星星或点型,而且线条颜色不同

proc gplot  data = mylib.sryzc;

  plot  Income*outgo = r_id;

  symbol1  color=black  v = star;

  symbol2  color=blue  v = dot;

run;

连线图

为了绘制连线,只要在SYMBOL语句中指定i = join。例如绘制家庭总收入对家庭编号的连线图,代码如下:

proc gplot  data = mylib.sryzc;

          plot  Income*id;

          symbol i=join v=star;

run;

也可以分地区绘制家庭总收入对家庭编号的连线图,代码如下:

如果换成这个样子,图像上面会出现星星或点型,而且线条颜色不同

proc gplot  data = mylib.sryzc;

  plot  Income*id=r_id;

  symbol1  color=black i=join v = star;

  symbol2  color=blue i=join v = dot;

run;

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有