立即注册 登录
公卫人 返回首页

cums6140的个人空间 https://www.epiman.cn/?13034 [收藏] [复制] [RSS]

日志

SAS编程基础

热度 2已有 1877 次阅读2009-6-17 22:25 |个人分类:sas|

2  SAS编程基础

SAS系统不仅可以使用菜单方式进行数据操作和统计分析,而且还具备强大的编程语言功能,供用户灵活调用各种分析参数。

2.1 SAS系统中,可以利用“Editor”或“Program Editor”窗口书写程序。SAS编程语言结构比较简单,主要有两个步骤,即DATA Step(简称DATA/数据步)和PROC Step(简称PROC/过程步)组成。程序中的每一行以“;”结尾,其语句的语法与常见的高级语言语法大体相似,同样包括关键字、运算符号、函数及其参数等基本要素。以下举例说明:

Title...;      /*设置标题栏*/

Libname…;      /*定义永久数据库*/

Data…;            /*data*/

…;

…;

Run;

Proc…;

Run;                /*PROC*/

    在sas语言中,通常利用“/*……*/”表示对程序的注释,(就像我学习C++的时候编者说过一个优秀的程序员要养成注释自己编写程序的习惯,这样利人利己!)DATA步和PROC步之前,如果输入表格或图形定义表头或标题、建立SAS数据库等。

DATA步(数据步)

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

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

Infile“外部数据路径及文件名”<选项>

如从c:/SAS/bonedne.txt文件中获取数据,可以利用以下infile语句。

infile c:/SAS/bonedne.txt;

input语句:指定读入数据的格式以及为杜如的数据指定变量名及格式,其语法如下所示。

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

如从上例读入的外部数据读入两个变量的数据,并分别命名SQ1SQ2

input SQ1 SQ2;

card语句:用于在SAS系统中直接输入数据,表明所列示数据的开始。

我们来在SAS运行以下上面的命令看看结果:

首先我们需要一个示范的数据库最好是txt结尾的数据文件,我是在一个统计教材里找到的一个数据文件。

  数据文件boneden.txt

Sas调用外部数据文件的方法很多,但是在SAS BESA考试中利用往往都是需要使用编成调用数据库和其他功能。所以使用语言还是很重要地。

那么boneden.txt这个文件所在的位置如下图

我们现在利用SAS程序,1建立一个新的临时数据文件;2调入文件boneden.txt中的部分变量有age zyg ht1 wt1 tea13显示导入变量以后的数据文件。

SAS程序如下:

data boneden;   

/*第一步建立一个SAS数据文件,名称boneden*/                    

infile 'c:\SAS\boneden.txt';      

/*调用c盘下SAS文件夹中的boneden.txt文件,需要引用数据文件的物理地址*/

input age zyg ht1 wt1 tea1;       

/*读入变量依次为age zyg ht1 wt1 tea1*/

run;  

/*运行*/                                 

proc print data=boneden;

/*显示数据文件boneden,记住这个文件是刚建立的SAS数据文件*/

run;

/*运行*/

输入好程序后电击F8,结果见下图

 

 

Prco步(过程步)

  <var  <变量1  变量2 …变量3>>

  <where  <条件表达式>>

  <by<变量名1  变量名2…  变量名n>>

Run

其中的语句功能如下:

Data语句表示该proc步所处理的数据集。

Var语句表示处理数据集中的特定变量,对于没有列示的变量,系统则不予处理。

Where语句表示制定系统处理符合一定掉建或表达式的样本。

By语句表示制定系统按照所列示的变量进行分组处理,但是要注意的是,使用该语句时,必须先对该语句中制定的分类变量进行排序。

常见proc步过程的作用及功能

过程名

作用

输出结果

Print

显示数据集的变量名及变量值

变量和变量值

Sort

对制定变量进行排序

对指定变量进行升序、降序排列

Means

对数值型变量进行描述分析

均数、标准差等统计量

Univariate

对数值型变量进行描述分析

常见统计量、t检验等

Freq

对定序变量进行描述统计分析

频数、频率、累积频率等

Chart

对指定变量绘制文本形式的图形

饼状图、直方图等

Gchart

在“Graph”窗口中对指定变量绘制图形

饼状图、直方图等

以上输出结果均可在“output”窗口中显示,并且在“rusults”窗口中列示对应结果的标签。双击标签会在“output”窗口中显示对应的具体内容。

 

3 SAS编程语言的表达式

   SAS 的常用表达式主要有运算表达式和逻辑表达式。SAS的运算符主要有+(加)、-(减)、*(乘)、/(除)、**(乘方)等;SAS的逻辑符号主要有=(等于)、<(小于)、>(大于)、<=(小于等于)、>=(大于等于)、<>(不等于)、and(和)、or(或)、xor(异或),这些符号也可以用英文字母等价表示。

SAS结构化编程语句

   SAS的结构化编程语句主要有顺序的语句、条件语句和循环语句。这3种基本的语句均可在DATD步和PROC步中使用。顺序语句是最为常见的语句形式,系统按照语句自身顺序进行解释形式的执行。下面简要介绍条件语句和循环语句的基本使用方法。

3.1条件语句

条件语句能够使程序按照一定的表达式或条件实现不同的操作或执行顺序跳转的功能,其语法如下所示:

If  条件或表达式 then

                                   /*当条件或表达式满足时执行的程序*/

Else

                                   /*当条件或表达式不满足时执行的程序*/

此外,条件语句还可以进行嵌套。

举例:比较xY两个变量的大小,如果x>y,则输出“x>y”;如果x<y,则输出“x<y”;如果x=y,则输出“x=y

现在假定x=99y=100,在editor窗口中输入以下程序:

   Data;

   X=99;y=100;

   If  x>y  then

      Put "x>y";

Else

     If x<y then

       Put "x<y";

Else

     Put "x=y"

run;

看看运行后的结果

 

3.2循环语句

   循环语句可以使SAS系用循环执行一定的程序,主要有计数(DO)循环、当(while)循环、直到循环(until3种形式。

   3.2.1计数循环

   计数循环的主要表达方式如下所示:

   Do 计数变量=初始值  to  终止值  by  步长;

    

   End

举例:计算1~100之内的所有奇数之和。具体程序如下:

方法一:

   Data;

     Y=0;

Do x=1 to 99 by 2;

   y=y+x;

end;

put "y=";

run;

方法二:

Data;

   Y=0;

Do  x=99 to 1 by -2;

      Y=y+x;

     end;

Put  "y="  y;

Run;

1

路过

鸡蛋

鲜花

握手

雷人

刚表态过的朋友 (1 人)

发表评论 评论 (3 个评论)

回复 epiman 2009-6-17 23:31
写日志的时候请填写合适的“标签”,使得相似的帖子可以关联起来:)
这篇日志帮你补上了
回复 epiman 2009-6-17 23:32
一个优秀的程序员要养成注释自己编写程序的习惯,程序的可维护性很重要
回复 henryhl 2010-7-9 13:04
好像和二级C语言的程序挺像的。

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|会员|至尊|接种|公卫人 ( 沪ICP备06060850号-3 )

GMT+8, 2024-5-9 22:19 , Processed in 0.033308 second(s), 7 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

返回顶部