热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SAS自学系列SAS语句的语法

SAS是现今非常流行的数据分析和数据挖掘软件,想从事数据分析行业,掌握SAS很有必要。虽然SAS本身提供了丰富的人机交互界面,通过手动调用

        SAS是现今非常流行的数据分析和数据挖掘软件,想从事数据分析行业,掌握SAS很有必要。虽然SAS本身提供了丰富的人机交互界面,通过手动调用各个Menu能方便地完成数据统计分析的任务,但是,通过代码来调用各个功能模块无疑能为工作带来巨大的灵活性,并显著提高效率。

    本文主要是根据网上找到的一个电子文档《SAS语句简介》(可能是某本书的其中一章)以及朱世武老师的《SAS编程技术教程》整理而成。

    SAS 程序通常分为数据步和过程步,一段SAS 程序根据目的和需要可以有0到多个数据步(Data)和0到多个过程步(Proc),还可以有系统选项语句、ODS语句等全局语句。

        1.数据步(Data Step)

        以关键词Data 开头,可由多条语句构成,结束标志可以是空语句、Run 语句、过程步或下一步数据步。

          数据步功能有:

    (1)从外部文件中读取数据;

    (2)将数据写入到外部文件中;

    (3)读取SAS数据文件和视图;

    (4)创建SAS数据文件和视图。

    2.过程步(Proc Step)

    以关键词Proc 开头,可由多条语句构成,结束标志是Run或Quit 语句。过程步的功能有:

    (1)调用 SAS 过程(SAS Procedures)分析和处理SAS数据集形式的数据,或执行其他分析;

    (2)将分析结果以报表、图表的形式输出,或输出成 SAS数据集、外部文件;

    (3)生成SQL查询;

    (4)数据操作和管理。

    下面是一段代码示例,通过注释可以看出怎样写SAS语句。

1 /****************************\

2 | 10名学龄儿童的身高体重资料 |

3 \****************************/            /*这三行都是注释,SAS中的注释跟C语言一样,是用/*和*/来包括的*/

4 OPTIONS nodate number=0;                    /*系统选项语句,nodate参数指定不在结果标题中显示时间,number=0也可以写成nonumber,指定不在标题中显示页数*/

5 DATA SASTJFX48_1;                                   /*数据步,以Data开始,SASTJFX48_1是用户自定义的SAS数据集的名字*/

6   INPUT name $ height weight @@;        /*INPUT创建变量、读取数据值、给变量赋值的语句,name,height,weight是用户自定义变量,$表示name是字符变量,*/

                                                                           /*@@是读取数据值的指针控制符号,指定在同一个数据行可以读取2个以上的观测数据*/

7   BMI=weight/(height/100)**2;              

8 LABLE BMI=‘body mass index’;           /*通过“LABEL”语句设置变量BMI 的标签为“body mass index”*/

9 DATALINES;                                                  /*指DATALINES单独占一行,指定其后为数据行*/
10 WangHB 149.4 30.8 WuCJ 167.6 46.6    /*此处开始为数据行*/
11 ChenF 146.3 33.1 GaoSY 170.7 44.0        
12 ZhanZL 161.5 36.3 LiYZ 164.6 40.8
13 ShenJJ 155.5 36.7 ZhaoJH 158.5 35.4
14 ZhangHX 149.4 33.1 WangXS 156.4 31.8
15 ;
16 RUN;

17 ODS HTML;                                                  /*ODS为输出语句,指定以HTML语句的格式输出*/
18 PROC MEANS data=SASTJFX48_1;        /*PROC指示过程步的开始,后接过程名,MEANS为SAS过程名,’data’为数据集选项,*/

                                                                           /*指定过程步分析的数据集为SASTJFX48_1*/
19   VAR bmi;                                                    /*VAR后跟变量名,指定分析的变量*/
20   OUTPUT out=result mean=BMImean;   /*OUTPUT为将运行结果输出,out后为用户自定义的输出数据集名,mean为结果中的均数名,=后面是用户自定义的输出名*/
21 RUN;
22 PROC PRINT data=result (keep=BMImean); /*调用PRINT过程在窗口显示result数据集,keep=是数据集选项,指定保留的变量*/
23 FORMAT BMImean 4.1;               /*FORMAT规定变量的输出格式,其后是变量名和输出格式,4.1表示标准数值型数据输出格式*/
24 RUN;

ODS HTML CLOSE;                            /*与17行的ODS成对出现的语句,指示关闭HTML格式的输出*/

 

    3.SAS程序书写规则

    SAS程序在书写的时候要遵循如下几点规则:

    (1)每条SAS语句以分号(;)结尾;

    (2)SAS语句可以从任何一行、任何一列开始,一行上可以写多条SAS语句;
    (3)一条SAS语句可以写在多行上,但不能把一个语法单位分开写在不同的行上;
    (4)一般情况下,一条语句中不同的语法单位要用空格或换行符分隔,但是一些字符的前方或后方,可以不用空格分隔,SAS可以自动分析语句结构、识别语法单位;

    (5)SAS语句书写不区分字母的大小写,但在一些特殊场合除外。

    4.SAS的注释

    下面的一幅图片很好的解释了SAS的注释语句。

 

image

        5.SAS命名规则

    SAS要遵循如下的命名规则:

    (1)SAS 名以字母或下划线开头,后续字符可以是字母、数字或下划线(同C语言);
    (2)SAS 名依据其使用的场合有一定长度限制,有的部位的SAS 名至多有32 个字节长度,有的部位的SAS 名至多有8 个字节长度;

    (3)SAS 名不区分大、小写,例如BMI、Bmi、bmi 在SAS 名中都是一个词;
    (4)SAS 名中不能出现空格,并且SAS 名中除了字母、数字、下划线外,不能含有其他特殊字符,如#、$、@、%等特殊字符不能出现在SAS 名中;
    (5)SAS 保留了一些自动变量名及变量列表、SAS 数据集名和逻辑库引用名;

        6.SAS变量

    编程语言一般都离不开变量。变量相当于一个容器,用来保存一定结构的数据。SAS变量除了具备常规编程语言所具备的许多共性外,也有一些自己的特点,下面主要讲述它特别的地方:

    (1)SAS中只有两种数据类型--数值型和字符型。变量后加美元号表示该变量时字符型,美元号可以紧跟变量名后面,也可以空格。

    (2)变量默认长度为8个字节,通常一个普通英文字符占一个字节,一个汉字占两个字节;用户可以用Length,Attrib语句修改变量的长度。如果变量第一次出现在表达式左边,则变量长度与表达式右边的结果值的长度一致。

    (3)输出格式:字符型变量默认输出格式是“BEST16.”,数值型变量默认的输出格式是“$w.”,可以用Format,Attrib语句或者Format过程定义或修改变量的输出格式。

    (4)变量次序:指数据步创建或定义变量的次序。

    (5)索引类型:决定这个变量是否是数据集索引的一部分的属性。这个属性可以用Contents 过程的‘OUT=’选项进行定义和修改。

    7.SAS运算符

    8.SAS文件系统

    (1)逻辑库

    逻辑库名是SAS名,长度不能超过8B。建立SAS逻辑库的语句:

    LIBNAME libref ‘SAS-data-library’

    语法说明:

    libref:逻辑库名

    SAS-data-library:逻辑库对应的物理地址

    engine:引擎名称(缺失时是默认引擎)

    逻辑库又分为临时库和永久库:临时逻辑库指的是内容只在启动SAS时存在,一旦退出SAS时内容完全被删除。系统默认临时逻辑库是work,引用临时库work中的文件时,可以不加库名。永久库当然在SAS关闭后仍旧保留。

    (2)数据集

    SAS数据集分为两类:SAS数据文件和SAS数据视图。SAS数据文件同时描述信息和存储数据值,SAS视图并不实际存储数据,它相当于一个查询语句。

    (3)数据集选项

    数据集选项用在SAS数据集名称后的括号中,多个选项之间用空格隔开。括号中的数据集选项的作用:
    重新命名变量;

    选择需要的观测;

    输出数据集中保留或删除的变量;

    数据集加密。

    语法格式:

    Data-set-name(Data-set-options)

    (option-1&#61;value-1<…option-n&#61;value-n>)

例子&#xff1a;
    data scores(keep&#61;team game1 game2 game3);

    /*scores中保留team, game1, game2, game3四个变量*/

    proc print data&#61; new(drop&#61;year);   /*去掉变量year*/

    set old(rename&#61;(date&#61;Start_Date)); /*将date改名*/

   

 

转:https://www.cnblogs.com/superhuake/archive/2012/07/17/2594841.html



推荐阅读
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
author-avatar
mobiledu2502892183
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有