《SAS统计分析从入门到精通》第一章笔记1.1-1.3

第一章 数据预处理

1.1 SAS操作界面

  • 菜单栏中的“解决方案”菜单利用SAS进行数据分析、程序开发的最主要的菜单。
    该菜单下的“Analysis(分析)”二级菜单涵盖了绝大多数功能和模块。
    该菜单下的"ASSIST和Desktop(桌面)“两种图形界面(GUI)。

如何做数据分析 sas 如何做数据分析_数据集


如何做数据分析 sas 如何做数据分析_笔记_02


用户可单击GUI上的图标进入对应的分析功能和模块。

  • Explorer(浏览):窗口类似于Windows系统下的资源管理器,可以实现对SAS数据库、数据文件、程序及其他文件的查看、打开、新建、删除等基本操作,甚至可以直接运行SAS系统外的其他软件。
  • Results(结果):窗口可以以目录或者条目的形式提供分析结果的浏览功能。
  • Output(输出):窗口主要呈现利用SAS系统进行分析的结果。——F7
  • Log(日志):用户对SAS的每一步操作都会以日志形式列示在窗口中。同时,在进行数据分析的过程中,一些出错信息和程序执行的反馈信息也会出现在该窗口。——F6
  • Editor(编辑器):用户可在该窗口进行编程或输入文字信息。——F5
    打开这些默认窗口的方式:1.在命令框中输入对应窗口的名字。
    2.在“视图”菜单单击对应窗口的名字。

1.2 SAS编程基础

1.2.1 SAS编程语言的基本结构
  • SAS主要由两个步骤:DATA Step(简称DATA/数据步)PROC Step(简称PROC/过程步)
  • 程序中的每一行以“;”表示输入结束。
  • 其语句语法包括关键字、运算符号、函数、及其参数等基本要素。
title"...";      /*设置标题*/
libname...;      /*定义永久数据库*/
data...;         /*DATA步*/
    ...;
    ...;
run;
proc...;         /*PROC步*/
run;
1.DATA步

主要功能:建立SAS数据集,导入外部程序数据文件、分割、合并、修改、更新现有的SAS数据集,分析、呈现和管理数据,利用数据集中已有的数据计算或生成新变量等。DATA步常用的SAS编程语句如下。

  • infile语句:从外部文件获取数据。使用该语句必须把其放在其他DATA语句之前,主要语法如下:

infile“外部数据路径及文件名“<选项>;

如从D:\student.txt文件中获取数据,可利用以下infile语句。

infile"D:\student.txt";
  • input语句:指定读入数据的格式以及为读入的数据指定变量名及格式,语法如下:

input<变量名1 变量名2 … 变量名n><选项>

如从读入的外部数据中读入height、weight两个变量。

input height weight;
  • cards语句:用于在SAS系统中直接输入数据,表明所列示数据的开始。
2.PROC步

主要功能:可引用现有的程序或过程进行相应的数据处理和分析活动。其主要语法如下。

proc 过程名<data=数据库名.数据集名><选项>;
    <var<变量名1  变量名2  ...  变量名n>>;
    <where  <条件或条件表达式>>;
    <by  <变量名1  变量名2  ...  变量名n>>;
run;

其中的语句主要功能如下:

  • data语句表示该PROC步处理的数据集。
  • var语句表示处理数据集中的特定变量。
  • where语句表示指定系统处理符合一定条件或表达式的样本。
  • by语句表示指定系统按照所列示的变量进行分组处理。用该语句时,必须先对该语句中指定的分类变量进行排序。
3.SAS编程语言的表达式

SAS的常用表达式:运算表达式逻辑表达式

SAS的运算符主要有:+、-、*、/(除)、**(乘方);

SAS的逻辑符号主要有:=、<、>、<=、>=、<>(不等于)、and(和)、or(或)、xor(异或)。

这些符号也可以用英文字母等价表示:

符号

=

<

>

<=

>=

<>

英文

eq

it

gt

le

gt

ne

1.2.2 SAS结构化编程语言

SAS的结构化编程语言主要有顺序语句条件语句循环语句。顺序语句是最常见的语句形式,系统按照语句自身顺序进行解释形式的执行。

1.条件语句

语法如下:

if 条件表达式 then
...;                /*当条件或表达式满足时执行的程序*/
else
...;                /*当条件或表达式不满足时执行的程序*/
2.循环语句

主要有DO(计数)循环,WHILE(当)循环,UNTIL(直到循环)3种形式。

  • 计数循环:
do 计数变量=初始值 to 终止值 by 步长;
...;
end;

如果by步长省略,则表示计数变量按照默认步长1计数。步长也可以是负数,此时计数变量初始值需大于终止值。

  • 当循环:
do while;(继续循环条件表达式)
...;
end;

该语句执行时会首先判断条件表达式是否成立。如果成立,则系统执行DO WHILE中的语句,遇到END时返回条件表达式的判断。如此重复,直到条件表达式不能够满足为止。

  • 直到循环:
do until;(退出循环条件表达式)
...;
end;

该语句会首先执行循环语句内部的程序,然后判断条件是否成立。如果成立,则退出循环过程,否则继续执行循环内部的程序。

1.3 SAS数据的处理对象

1.3.1 SAS数据库和SAS数据集

SAS的数据对象是存在于SAS数据库中的数据集。数据集是SAS的数据处理对象,同时也是数据分析的基础。

1.SAS数据库

SAS数据库具体是指存放SAS数据文件(即数据集)的文件夹。

(1)SAS数据库的分类

根据数据处理的时效性不同,SAS数据库可分为临时库和永久库。

  • 临时库:只有一个,WORK。启动时SAS系统自动生成,关闭时数据库中的所有数据文件自动被清除。
  • 永久库:可有多个,用户可以自己指定永久库的库的标记。

(2)SAS永久数据库的建立

  • 通过菜单操作方式制定
  • 利用编程方式制定
LIBNAME 库标记<.路径<,数据引擎<,数据引擎的选项>>>

如:建立一个名为“test”的永久数据库该数据库对应的文件夹绝对路径为“D:\Statistics\SAS\SAS 9.1”

LIBNAME test"D:\Statistics\SAS\SAS 9.1";

(3)清除指定的数据库

清除一个具体的数据库时,只是清除其在SAS系统中先前指定的逻辑库名,并不会清除计算机储存器上对应的物理文件夹。

LIBNAME test;
2.SAS数据集

SAS数据集具体是指存放在SAS数据库中的数据文件,是用SAS进行数据分析的基本对象,它与某一个具体的文件相对应。

(1)SAS数据集的分类

  • 临时数据集:存放在临时数据库(WORK数据库)中的数据文件,关闭SAS,临时数据集会被自动清除。
  • 永久数据集:存放在永久数据库中的数据文件。

(2)SAS数据集的调用

  • 每个数据集都有一个二级名字。第一级是库标记,第二级是数据集名。一般形式为:库标记.数据集名
  • 调用永久数据库中的数据集时,应当指定该数据集对应的库标记。而调用临时数据库中的库标记时,则可以省略库标记,直接引用即可。

如,引用Sample永久库中名为“ABC”的数据集:Sample.ABC。

引用WORK数据库中名为“ABC”的数据集:WORK.ABC或ABC。

  • SAS数据集的内容包含变量及其对应的数据,即样本观测值。
3.SAS变量的类型

基本类型:数值型和字符型。

整数、实数、浮点数、科学计数、表达日期或时间的变量都被储存为数值型数据,默认长度为8字节。

汉字、字母、符号等储存为字符型数据,默认长度也为8字节。

实际数据中遇到的缺失值,SAS系统通常用“.”表示。

4.利用SAS编程建立数据集

在已有数据库中建立数据集时,主要使用SAS语言中的DATA步中的INPUT函数和CARDS选项。DATA步用于指定数据集的名字,INPUT函数的主要作用是指定变量及变量的属性,并为对应的变量输入指定的输入方式,其主要语法如下。

INPUT <变量名1 变量名2 ... 变量名n><@@>;

CARD选项则列示了所有变量对应的数据,可以为INPUT指定的变量读入数据,一直读到“;”为止。下面在永久数据库Myljk中建立名为“score”的数据集。

data myljk.score;             /*在mylik中建立名为“score”的数据集*/
input id liternature math @@ ;  /*定义数据集中的变量和数据读入方式*/
label id="学号" liternature="语文" math="数学" ;  /*定义数据集中变量的标签*/
cards;
 1 89 87 2  78 90 3  79 89 4  90 76 5  95 87
 6 87 89 7  89 69 8  69 88 9  75 78 10 70 92
 ;

结果:

如何做数据分析 sas 如何做数据分析_数据库_03

  • LABEL语句可以为变量名设置标签。
  • INPUT语句中的”@@“表示按照INPUT定义的变量顺序依次连续输入数据,无论数据分为多少行,遇到“;”则停止数据读入。如果没有”@@“符号,则表示系统按照行读入数据,如上例中系统首先按照INPUT指定的顺序读入第一行中的1、89、87,接下来读入2、78、90,接着跳至第3行,第三行为“;”故停止读入。
  • 还可以用INPUT语句读入字符型变量,这时需要在INPUT语句中指定的字符名后加上“$”符号。如在上例中增加字符型变量“name”,其标签为“姓名”。
data myljk.score;             /*在mylik中建立名为“score”的数据集*/
input id name$ liternature math @@ ;  /*定义数据集中的变量和数据读入方式*/
label id="学号" name="姓名" liternature="语文" math="数学" ;  /*定义数据集中变量的标签*/
cards;
 1 张三 89 87 2 李四 78 90 3 王五 79 89 4 赵二 90 76 5 孙玉 95 87
 6 张一 87 89 7 李五 89 69 8 黄源 69 88 9 陈强 75 78 10 钱刚 70 92
 ;

结果:

如何做数据分析 sas 如何做数据分析_笔记_04


此外,在已有数据集的情况下,也可以利用SET语句对数据集进行复制。如根据Myljk.score数据集复制新的Work.score数据集,程序如下:

data score;
set Myljk.score;
run;
1.3.2 SAS数据系统的外部数据文件

对于在其他非SAS系统环境(如Excel、Access、Lotus等)中建立的数据文件,SAS可以通过数据导入功能把其转换为SAS数据集。

1.利用SAS/Import Data(导入数据)菜单进行数据的导入

File(文件)->Import Data(导入数据)

例如:现有我国20世纪80年代的居民消费和人均GDP的数据,统计分析人员利用Excel 2003进入数据录入,建立了名为"MacroEconomy.xls"的Excel工作簿。该工作簿中一共有3个工作表,分别是Economy、Sheet2、Sheet3,其中所有数据储存在Economy中。要求把该文件中的变量及其对应的数据导入至SAS系统的Myljk数据库中,并建立名为“Percapitadata”的数据集

如何做数据分析 sas 如何做数据分析_数据库_05

如何做数据分析 sas 如何做数据分析_笔记_06

如何做数据分析 sas 如何做数据分析_数据集_07


如何做数据分析 sas 如何做数据分析_数据集_08


如何做数据分析 sas 如何做数据分析_笔记_09


如何做数据分析 sas 如何做数据分析_SAS_10


如何做数据分析 sas 如何做数据分析_数据库_11

2.利用SAS程序进行数据导入

用IMPORT语句向Myljk数据库中导入“E:\”路径下"MacroEconomy.xls"工作簿中的Economy工作表的数据,并命名为“Percapitadata”数据集,程序如下:

proc import datafile="E:\MacroEconomy.xls"   /*指定外部数据文件路径及文件名*/
out=Myljk.PERCAPITADATA;                      /*指定导入的数据库和数据集名*/
    sheet='Economy';
	run;