SAS软件入门教程课件.ppt
第第1章章 SAS软件入门软件入门清华大学经管学院清华大学经管学院 朱世武朱世武本章内容提要本章内容提要l SAS软件介绍l SAS安装与启动l SAS工作界面l SAS窗口操作l SAS帮助文档本章重点本章重点lSAS安装*lSAS技术水平层次分类*lSAS工作界面*-重要功能键:F5,F6,F7,CTL+El命令行*l资源管理器窗口*l结果窗口*F7l增强型编辑器窗口*F5l日志窗口*F6l文件浏览及操作*删除resdatl新建逻辑库*创建resdatl程序编辑窗口操作*l数据集导入和导出*SAS系统简介系统简介 l 全称为Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究生编制 l 1972研制出第一版,1976年成立了SAS软件研究所,正式推出了SAS软件,现在是8.2版 l 是用于数据分析与决策支持的大型集成信息系统,统计分析功能是它的重要组成部分和核心功能 l 国际上的标准软件系统 SAS功能模块功能模块l BASE SAS模块模块 l SAS/STAT-统计分析模块统计分析模块 l SAS/ETS-经济计量学和时间序列分析模块经济计量学和时间序列分析模块 l SAS/OR-运筹学模块运筹学模块 l SAS/QC-质量控制模块质量控制模块 l SAS/IML-交互式矩阵程序设计语言模块交互式矩阵程序设计语言模块 l SAS/GRAPH-绘图模块绘图模块 l SAS/FSP-快速数据交互式菜单系统模块快速数据交互式菜单系统模块 l SAS/AF-交互式应用开发模块交互式应用开发模块 SAS功能模块功能模块l SAS/ASSIT-菜单驱动界面模块菜单驱动界面模块 l SAS/ACCESS-访问外部数据模块访问外部数据模块l SAS/EIS-企业信息系统模块企业信息系统模块l SAS/INSIGHT-可视化探索工具模块可视化探索工具模块l SAS/CALC-电子表格模块电子表格模块l SAS/CONNECT-分布式数据处理模块分布式数据处理模块l SAS/WA-企业级数据仓库管理模块企业级数据仓库管理模块l SAS/EM-企业级数据挖掘模块企业级数据挖掘模块SAS模块分类模块分类 功能主要模块数据库及其管理BASE SAS,FSP,ACCESS,SQL,分析工具STAT,ETS,QC,OR,INSIGHT,CALC,开发展现工具BASE SAS,IML,AF,EIS,GRAPH,分布处理与数据仓库CONNECT,WA,SAS系统特点系统特点 v 由大型机系统发展而来v 针对专业用户进行设计 v 程序驱动,功能强大 v 高级编程语言v 具有工业用途的分析软件 SAS技术水平层次分类技术水平层次分类*第一层次:会使用SAS菜单以及一些菜单界面的SAS模块,如INSIGHT,ANALYST等,了解初步的SAS BASE语句,能用SAS系统作简单的数据加工处理和分析,具有一定的数理统计知识,掌握一定的SAS STAT过程。第二层次:精通SAS BASE,能用SAS语言编写复杂的SAS程序,能用SAS BASE进行大型的、复杂的数据加工整理和展现,掌握掌握SAS和外部数据文件的接口和外部数据文件的接口,会进行复杂的统计建模和分析等,初步掌握一种基于SAS的开发工具。第三层次:在一、二层面基础上,进一步掌握SAS/AF,SAS/IML等,能开发基于能开发基于SAS的数据管理和分析模块。的数据管理和分析模块。本章目的本章目的 让初学者能够快速地熟悉SAS系统的应用,完成一些简单的数据处理和分析,即快速达到SAS技术第一层面水平。让读者能充分利用SAS的强大功能进行金融数据加工处理、数据整合、数据展现及简单的金融建模和计算,即第二层面水平。介绍SAS系统的菜单操作,配合命令和功能键的使用。有些地方也会附带介绍SAS系统中的一些基本概念,使初学者能够边练习边了解SAS系统。SAS运行方式运行方式 SAS系统有多种运行方式:系统有多种运行方式:l 窗口模式窗口模式(Windowing Environment)l 行交互模式行交互模式(Line Interactive)l 非交互模式非交互模式(No interactive)l 批处理模式批处理模式(Batch)SAS工作界面工作界面*-重要功能键:重要功能键:F5,F6,F7,CTL+E命令行菜单栏工具栏窗口条功能窗口两类菜单栏两类菜单栏菜单栏的下拉菜单 操作:点菜单栏中的按钮弹出菜单操作:相应窗口点鼠标右键工具栏工具栏 工具=定制=“定制”资源管理器窗口工具栏 编辑器窗口工具栏 命令行命令行*在命令行中输入SAS命令可以快速完成一些SAS任务 主要功能窗口主要功能窗口 l 以“只显示内容”视图显示的“SAS 资源管理器”窗口(没有树视图)l“结果”窗口l 程序编辑器、增强型编辑器l“日志”窗口l“输出”窗口l“SAS 资源管理器”窗口资源管理器窗口资源管理器窗口*SAS 资源管理器窗口下,可以执行基本的 SAS 任务:l 创建新的逻辑库和文件快捷方式;l 创建新的逻辑库成员和目录条目;l 打开和编辑 SAS 文件。“树状结构”的资源管理器窗口 SAS默认的是“只显示内容”的SAS资源管理器窗口。根据操作环境,可以使用以下方法打开“SAS 资源管理器”窗口(打开树视图和列表视图):菜单:查看=SAS 资源管理器 命令:EXPLORER工具栏:SAS 资源管理器 结果窗口结果窗口*可以通过结果窗口对程序的输出结果进行浏览和管理 SAS可以用一种或多种格式(或类型)产生输出。默认类型是“列表”输出(如右图的“查询结果”)。其他输出类型包括 HTML、“输出数据集”和 PostScript。要设置输出类型,可使用菜单栏=工具=选项=参数选择=“结果”标签,进入参数选择窗口进行设置如下图所示。点选创建HTML时,输出结果同时展现在HTML文件中。增强型编辑器窗口增强型编辑器窗口*SAS9.1版本的默认编辑窗口为增强型。它比普通编辑窗口增加了如下功能:l 使用特定颜色对SAS程序、SCL程序以及HTML和XML文件的元素进行显示,同时进行相关语法检查。l 创建和格式化自定义的关键词。l 每个过程步、数据步或者宏的程序段都可以实现展开和收缩的功能,以便对SAS程序的宏观结构有更好的了解。l 通过定义缩写来快速输入一段文字。l 通过显示行号使得程序代码更具可读性。l 设定增强型编辑器的快捷功能键。l 同时打开一个文件的多个视图。l 将光标停留在语言元素上,按F1就可以直接进入到SAS帮助文档中该语言元素的说明部分,当然有时候该语言元素有多个主题,可以根据需要进行选择。日志窗口日志窗口*“日志”窗口用来查看程序运行信息:l 提交的程序语句;l 系统消息和错误;l 程序运行速度和时间。“日志”窗口中的元素根据以下类型呈现不同的颜色:l 程序行黑色:以语句标号开始;l 提示蓝色:以NOTE开始;l 警告绿色:以WARNING开始;l 错误红色:以ERROR开始。输出窗口输出窗口 proc print data=sashelp.class;quit;按F8提交程序,SAS界面如下所示:输出窗口用来查看SAS程序的输出结果 SAS窗口操作窗口操作 窗口切换窗口切换 点选该功能窗口区域,或是点选该功能窗口的窗口条标签。通过菜单栏中的“窗口”或“查看”菜单点选所需要的窗口。通过在命令行输入命令或点选功能键的方式打开窗口。视图停放视图停放 SAS默认启动了停放视图,并在工作界面的左边停放一些常用的窗口,如“结果”和“资源管理器”窗口。停放窗口停放窗口选择窗口以使其成为当前窗口。选择窗口窗口=停放停放。取消停放窗口取消停放窗口在停放区域的底部,点击要取消停放的窗口的选项。选择窗口窗口=停放停放。完全关闭停放完全关闭停放选择工具工具=选项选项=参数选择参数选择。在参数选择参数选择对话框中,点击视图视图选项卡。选中停放停放视图复选框并点击确定确定。所有窗口都被取消停放了。文件浏览及操作文件浏览及操作*增加目录、数据表增加目录、数据表点选目标逻辑库(除sashelp和maps外)。选择新建,就可以按照提示增加目录或SAS数据表。复制粘贴数据表复制粘贴数据表要复制粘贴逻辑库中的数据表和其它文件,只需在资源管理器窗口中进入源逻辑库选择数据表,按ctrl+c,然后进入到目标逻辑库中,ctrl+v就可以把这些表复制过来。新建逻辑库新建逻辑库*在逻辑库级别,在空白处按右键,选择新建,出现如下界面。在名称中输入新的逻辑库名称。在引擎中根据数据来源选择不同的引擎,如果只是想建立本机地址上的一个普通的SAS数据集数据库,可以选择默认。然后点选启动时启用,在逻辑库信息中,点选路径后面的浏览按钮,选择与这个逻辑库相对应的物理地址。选项窗口可以不填,点击确定产生一个新的逻辑库。程序编辑窗口操作程序编辑窗口操作*提交程序提交程序可以用增强型编辑器编写程序,也可以将用其它文本编写的程序拷贝到编辑器。程序完成后,直接按F3或者F8提交程序,或点选工具条中的提交按钮,或者在命令框中输入Submit命令。储存程序储存程序程序可以保存为其它格式的文本,也可以直接以编辑器的方式来储存,直接点选文件=保存,选择路径就可以保存这些程序。功能键窗口功能键窗口 在SAS软件中,一些键或组合已经被赋予特定功能,这就是功能键功能键。可以通过下列方式打开功能键窗口可以通过下列方式打开功能键窗口工具工具=选项选项=功能键功能键或者在命令行中输入KEYS的命令,或者按F9(系统默认设置)。参数选择窗口参数选择窗口 可以通过参数选择窗口对SAS进行许多个性化的设计 以下是SAS的默认设置 数据集导入和导出数据集导入和导出*数据集的导出数据集的导出第一步:点选文件文件=导出数据导出数据,出现如下界面,要求输入要导出文件的逻辑库名称和数据文件名称,比如要导出sashelp逻辑库的class数据文件,通过下拉菜单选择逻辑库和数据文件。第二步:点选next,进入到选择输出格式界面。通过下拉菜单选择给定的格式:Microsoft Excel 97,2000 or 2002 workbook,然后点选next.第三步:进入到设定输出文件位置和名称界面,通过浏览按钮选择输出位置,并键入输出文件的名称,如E:test.xls.第四步:点选ok,进入到SAS Export Wizard画面,SAS Export Wizard和后面要介绍的Import Wizard是SAS转换数据文件的工具。在这个画面中,Export Wizard要求对这个输出过程的table命名,这时可以直接选finish完成输出,或者命名为1。第五步:如果上一步选择命名,SAS会建立一段与上述窗口操作相同的程序,并提示是否要保存这段程序。第第2章章 SAS编程基础编程基础清华大学经管学院清华大学经管学院 朱世武朱世武ZResdat样本数据:样本数据:SAS论坛:论坛:SAS语言组件语言组件 SAS 文件文件 由SAS创建、储存、管理的文件就是SAS文件。所有的SAS文件都保存在SAS逻辑库中。最常用的SAS文件:l SAS数据集l SAS目录册 SAS外部文件外部文件 SAS不能直接识别的数据文件称为外部文件。外部文件一般用于储存数据。外部文件一般用来储存:l 要读入SAS数据文件的原始数据l SAS程序语句l 过程步输出DBMS文件文件SAS软件可以和其它数据库产品进行数据文件转换。SAS语言元素语言元素SAS语言由语句、表达式、选项、格式、以及和其它编程语言名称类似的函数组成。SAS有两种语句l 数据步l 过程步SAS文件系统文件系统 SAS逻辑库由一组SAS文件组成。SAS软件系统的信息组织有两层,第一层是SAS逻辑库,第二层是SAS文件。SAS逻辑库是一个逻辑概念,本身不是物理实体,它对应的实体是操作系统下一个文件夹或几个文件夹中的一组SAS文件。逻辑库逻辑库 逻辑库名与引用逻辑库名与引用SAS文件文件 逻辑库名是SAS名,长度不能超过8个字节。如SAS逻辑库:ResDat,SASHELP,SASUSER,WORK等。建立SAS逻辑库的方法:l 用菜单操作;l 用LIBNAME语句。语句格式:LIBNAME libref SAS-data-library 语法说明:Libref 逻辑库名 SAS-data-library 逻辑库对应的物理地址Engine 引擎名称(缺失时为默认引擎)例例2.1 用用LIBNAME语句创建语句创建SAS逻辑库。逻辑库。Libname ResDat d:ResDat;多个个文件夹创建一个多个个文件夹创建一个SAS逻辑库:逻辑库:Libname a(d:resbd,d:resfin);例例2.2 引用非临时库的SAS文件时必须使用两级命名方式,而引用临时库的SAS文件时,可以直接使用文件名,效果等同于work.文件名。data=ResDat.Idx000001;临时库和永久库临时库和永久库临时逻辑库临时逻辑库是指它的内容只在启动SAS时存在,退出SAS时内容完全被删除。系统缺省的临时逻辑库为WORK.永久逻辑库永久逻辑库是指它的内容在SAS关闭对话之后仍旧保留,直到再次修改或者删除。SAS系统中除了WORK以外的逻辑库都是永久库。库引擎库引擎库引擎是一组规定格式向逻辑库读写文件的内部指令。利用库引擎SAS系统可以直接访问其它SAS版本创建的SAS文件和外部数据库格式的数据文件。每个SAS逻辑库都对应一个库引擎。库引擎功能包括:l 读取和写入数据;l 列出库中的文件;l 删除和重命名文件。SAS通过不同库引擎读写不同格式的文件。每个SAS引擎都有着自身的运行特性。比如l 运行由旧版本SAS软件生成的文件;l 读取由其它软件生成的数据库文件;l 存储和访问硬盘或者tape上的文件;l 决定文件中的变量和观测如何放置;l 将文件从物理位置地址读取放入到内存;l 在不同的操作系统之间传输SAS文件。数据集数据集 SAS数据集有两类:l SAS数据文件l SAS数据视图SAS数据文件同时描述信息和存储数据值。SAS数据视图并不实际存储数据,而只是一个查询语句。class是数据视图class1是数据文件变量观测SAS数据集组成部分包括:l 描述信息;l 数据值。数据文件数据文件SAS数据文件是包含描述信息和数据值的SAS数据集。一般来说,SAS数据文件又分为:l 普通的SAS数据文件:SAS格式的数据文件。l 接口数据文件:以其它数据软件格式储存数据的数据文件。SAS提供对应的引擎来对这些文件中的数据进行读取和编写,如ORACLE DB2,SYBASE,ODBC,BMDP,SPSS和OSIRIS。虽然数据文件与视图文件在应用时没有任何区别。但这两虽然数据文件与视图文件在应用时没有任何区别。但这两者之间也有一定的差异。者之间也有一定的差异。l 前面已经提到二者最大的不同就是数据文件实际储存数值,视图只是包含表的描述信息以及一组用来读取数据视图只是包含表的描述信息以及一组用来读取数据的查询语句,并不实际存储数据的查询语句,并不实际存储数据。l 数据文件是静态的,而视图则是动态的。l SAS数据文件可以被索引,索引可以使SAS在搜索数据的时候变得更快。而SAS视图不能被索引。l 数据视图数据视图 SAS数据视图就是用来从其它文件中读取数据的一种SAS文件。它只包括数据集的描述信息,如数据类型、变量长度等,再加上如何从其它文件中提取数据所要求的信息。SAS视图一般分为两种:视图一般分为两种:l Native View,由数据步或者SQL过程创建。l Interface View,由SAS/ACCESS软件创建。Interface View可以读写其它数据库管理系统(DBMS)中的数据库,如DB2或 ORACLE数据库等。数据视图的使用优势数据视图的使用优势l 可以使用连接多个表的视图来合并数据集。l 数据视图可以节省大量的空间。l 数据视图可以保证读取的数据集永远都是最新的。l 更改一个数据视图只需要改变这个视图的查询语句。l 使用SAS/CONNET软件,视图可以将多个不同主机电脑上的数据文件整合,以整体的形式呈现。数据步视图数据步视图数据步视图包含用于从多个数据源中读取数据的数据步程序,这些数据源包括:l 原始数据文件;l SAS数据文件;l PROC SQL视图;l SAS/ACCESS 视图;l DB2,ORACLE,或者其它DBMS数据。语法格式:语法格式:Data 数据集名称/view=数据集名称;SAS语句.;Run;例例2.3 创建数据步视图。创建数据步视图。Data Resdat.class1/view=Resdat.class1;set Resdat.class;run;1 data Resdat.class1/view=Resdat.class1;2 Resdat.class1;3 run;NOTE:DATA STEP 视图已保存在文件 Resdat.class1 中。NOTE:存储的 DATA STEP 视图无法在不同的操作系统下运行。日志中信息PROC SQL视图视图PROC SQL视图为一个带有名称的PROC SQL查询。它可以读写的数据源同数据步视图。proc sql;create view resdat.e as select*from resdat.class;quit;日志中信息:4 proc sql;5 create view resdat.e as select*from resdat.class;NOTE:SQL 视图 resdat.E 已定义。6 quit;存储编译的存储编译的DATA步程序步程序语句格式 DATA data-set-name(s)/PGM=stored-program-name();data-set-name数据集名称stored-program-name存储编译的DATA步程序名称password-option给DATA步程序名称分配一个密码source-option 存储或编译源码 语法说明目录册文件目录册文件SAS目录册文件是特殊的SAS文件,用来存放多种不同种类的信息文件。这些信息文件都很小,每个信息文件都被称为一个条目(entry),条目有多种不同的类型。一些目录条件包含一些系统信息如功能键定义信息。SAS语言元素语言元素 数据集选项数据集选项数据集选项用在SAS数据集名称后的括号中,多个选项之间用空格隔开。括号中的数据集选项可以对数据集进行如下操作:l 重新命名变量;l 选择需要的观测;l 输出数据集中保留或删除的变量;l 数据集加密。语句格式:Data-set-name(Data-set-options)(option-1=value-1)例例2.4 数据集选项举例。数据集选项举例。data scores(keep=team game1 game2 game3);/*scores中只保留team,game1game2 game3这4个变量)proc print data=new(drop=year);/*去掉变量year*/set old(rename=(date=Start_Date);/*将date改名*/输入和输出格式输入和输出格式 输出格式输出格式format是SAS用来确定如何输出或写出数据值的指令,用FORMAT控制数据值在输出时所使用的格式。输入格式输入格式informat是SAS用来确定如何将数据读入变量的指令。如果在输入或输出数据集的过程中没有设定变量的输入和输出格式,系统会自动使用原数据集中的这个变量原有的输入输出格式。语句格式:format.informat.格式说明:$指定为字符格式,如果该项空缺,则默认是数值格式format规定有效SAS输出格式Informat规定有效SAS输入格式w设定输入输出的长度,一般来说是数据所占的列的数目d设定数值数据中小数点的位数函数和函数和CALL子程序子程序 SAS函数函数对数据参数进行计算处理并返回一个值。大多数函数所使用的参数是由用户提供的,一小部分函数使用系统提供的参数。CALL子程序子程序用来改变变量值,或执行一些系统功能。CALL子程序类似于函数,但是不能在赋值语句中使用,所有的SAS CALL子程序都只能被CALL语句使用。语句语句SAS语句就是一系列关键词、SAS名称、算符以及特殊字符的组合。所有的SAS语句以分号结尾。SAS语句一般分为数据步语句与过程步语句,以及可以用在SAS程序任何地方的全局通用语句。KEYWORD parameteroptions;关键词关键词 参数 选项;其中:粗体-必须按显示形式书写的关键词;白正体-用户提供的信息;-括号内的信息可选;|-任选。参数PARAMETER不是任选项,不用括号,OPTIONS是选项关键词。例例2.5 有效的有效的SAS语句。语句。data data1;/*data为关键词,data1为SAS名*/data _null_;/*_null_为SAS名*/put name$8.;/*put为关键词,name为SAS名,$8.为输出格式*/format date yymmdd10.;proc means data=ResDat.class;/*proc为关键词,means为过程名*/infile“d:ResDatclass.txt”;do I=1 to 100;x=y+1;sumx+x;run;SAS系统选项系统选项 系统选项用来控制SAS的运行方式,如SAS系统启动,硬件软件的连接,SAS程序的运行等。语句格式:OPTIONS option(s);option 设定一个或多个系统选项,任何系统选项都有一个默认设置。例例2.6 设定选项设定选项OPTIONS obs=5;/*取数据集前五个观测*/Data one;Set ResDat.class;Run;表达式表达式 表达式由一系列操作符和操作对象构成,产生一个目标值。使用表达式可以对变量作变换和赋值,创建新变量,计算新数值以及控制条件语句的运行等。操作对象有:l 变量;l 常数。操作符包括:l 算术算符;l 比较算符;l 逻辑算符;l SAS函数;l 括号。SAS常数常数 SAS常数是SAS系统可以识别的一些固定值。数值常数数值常数 例例2.7 数值常数。数值常数。1,5,1.23,1.2E23,2E4,20000数值常数可以有多种格式展示。标准格式标准格式:1,01,+1,-1,1.1;科学计数法:科学计数法:1.1e11,1.2e-12;十六进制格式:十六进制格式:1cx,12x,9x字符常数字符常数 例例2.8 引用带引号的字符常数。引用带引号的字符常数。name=TOM”S;name=”TOMS”;/*例中,两语句等价。*/要注意的是,字符常数是由引号括起来的,但是字符变量的名称则没有引号,也就是说字符常数不能作为字符变量的名称。日期时间常数日期时间常数 例例2.9 引用日期时间常数。引用日期时间常数。1jan2000d;01jan00d;9:25t;18jan00:9:27:25dtif begin=01JAN2000d then end=31DEC2000d;SAS算符算符SAS算符是一些符号,其作用是进行计算、比较等。算术算符算术算符 例例2.10 算术算符应用。算术算符应用。data;X=3.5*2.5;put X=;Y=9+1/3;put Y=;X=.;Y=1+X;put Y=;/*Y也是缺失值*/run;输出结果:X=22.917651494Y=9.3333333333Y=.比较算符比较算符 例例2.11 比较算符应用。比较算符应用。if xy then c5;else c12;比较算符经常出现在IF语句里。比较准则:l 数值和字符都可以比;l 结果为真赋值1,假赋值0;l 字符值从左到右逐个按ASCII码排列序列进行比较;l 缺失值参加比较时,它比任何有效值都小。逻辑算符逻辑算符 算符等价形式含义AND与|OR或 NOT非其它算符其它算符:连连接接字字符符算算符符“|”例例2.12 连接多个变量和常数。连接多个变量和常数。data;set ResDat.lstkinfo;result=%a(|stkcd|,|stknm|);put result;run;SAS变量变量 SAS变量分为数值变量和字符变量。数值变量数值变量数值变量是SAS系统以浮点(floating-point)方式存储的数据变量,数值变量包括日期和时间。数值变量的值只能是数值。字符变量字符变量字符变量可以由阿拉伯字母、数字0-9以及其它一些特殊字符组成。字符变量的值可以是字符、字母、特殊字符和数值。字符变量名后跟一个美元号($)表示该变量是字符型而不是数值型。变量属性变量属性 SAS变量的属性包括:长度、输人输出格式和标签。未设定属性的变量在它们第一次出现时由系统给出。变量的长度是指存贮变量值的字节数。缺省长度为8个字节。变量的输人格式是指SAS系统读人变量值的方式。变量的输出格式是指SAS系统展现变量值的方式。变量的标签是指变量名的描述性标识,它至多可用256个字符。创建变量创建变量 使用赋值语句使用赋值语句 Data a;x=1;run;/*数据集a中有个变量x,值为1*/使用使用INPUT语句语句 Data b;Input x$;Datalines;Aaa ;Run;使用使用FORMAT 或或 INFORMAT语句语句 Data b;Set b;Informat y$9.;Run;以类似的方式创建变量的还有LENGTH语句,ATTIRB语句。变量类型转换变量类型转换 字符自动转换为数值字符自动转换为数值 例例2.15 字符自动转换为数值。字符自动转换为数值。data;X=1;/*X为数值变量*/Y=10;/*Y为字符变量*/X=Y;/*将字符变量赋值给一个数值变量时,自动将字符变量Y转换为数值变量*/run;data;X=1;/*X为数值变量*/Y=10;/*Y为字符变量*/Z=X+Y;/*算术表达式中有字符变量时,自动将字符变量Y转换为数值变量*/run;data;X=1;/*X为数值变量*/Y=10;/*Y为字符变量*/if XY;/*字符与数值变量进行比较时,自动将字符变量Y转换为数值变量*/run;data;Y=10;/*Y为字符变量*/Z=log(Y);/*需要数值变量的函数中引用字符变量时,自动将字符变量Y转换为数值变量*/run;函数函数INPUT将字符转换为数值将字符转换为数值 INPUT函数的形式:INPUT(数据源,输入格式);其中:数据源为要转换为数值的变量,常数或表达式。数据源既可以是数值型,也可以是字符型。输入格式规定对数据源进行转换的输入格式。例例2.16 转换字符变量为数值变量。转换字符变量为数值变量。data a(keep=code);set ResDat.lstkinfo;code=input(stkcd,6.);run;数据集Acode1245200011200012数值自动转换为字符数值自动转换为字符 例例2.19 数值自动转换为字符。数值自动转换为字符。data;X=10;/*X为字符变量*/Y=10;/*Y为数值变量*/X=Y;/*自动将数值变量Y转换为字符变量*/run;日志信息:10 data;11 X=10;/*X为字符变量*/12 Y=10;/*Y为数值变量*/13 X=Y;/*自动将数值变量Y转换为字符变量*/14 run;NOTE:数字值已转换为字符值,位置:(行:列)。13:3NOTE:数据集 WORK.DATA2 有 1 个观测和 2 个变量。NOTE:“DATA 语句”所用时间(总处理时间):实际时间 0.03 秒 CPU 时间 0.00 秒data;Y=10;/*Y为数值变量*/Z=ROOM|Y;/*自动将数值变量Y转换为字符变量*/put Z=;run;data;Y=10600001;/*Y为数值变量*/Z=SUBSTR(Y,7,6);/*自动将数值变量Y转换为字符变量*/put Z=;run;Z=ROOM 10Z=600001系统自动地将数值转换为字符时,使用系统自动地将数值转换为字符时,使用BEST12.的输出格式,字符值右的输出格式,字符值右对齐。对齐。函数函数PUT将数值转换为字符将数值转换为字符 PUT函数的形式:PUT(数据源,输出格式);其中:数据源为要转换为字符值的变量,常数或表达式。数据源既可以是数值型,也可以是字符型。输出格式规定对数据源进行转换的输出格式。例例2.20 转换数值变量为字符变量。转换数值变量为字符变量。data a(keep=date x);set ResDat.stk000001;x=put(clpr,8.2);run;自动变量自动变量 自动变量是由数据步语句自动创建的。这些自动变量被加入到程序数据向量(PDV)中,但是并不输出到数据集中。自动变量在重复过程中被保留,而不是被设定为缺失。例:使用自动变量例:使用自动变量_Numeric_。data one;set sashelp.class;keep _numeric_;/*只保留数据集中的数值变量*/run;错误类型与处理错误类型与处理 SAS系统能够检查出错误类型有:句法错;词义错;运行错;数据错;与宏有关的错。SAS系统提交含有错误的程序后,LOG窗口会显示的信息有:出错的词;错误的可能位置;对错误的说明。句法错句法错 例例2.22 关键词拼写错。关键词拼写错。daat a;/*将data错拼为daat*/x=2;run;日志窗口信息:4 daat a;/*将data错拼为daat*/-14WARNING 14-169:假定符号 DATA 错拼为 daat。5 x=2;6 run;NOTE:数据集 WORK.A 有 1 个观测和 1 个变量。NOTE:“DATA 语句”所用时间(总处理时间):实际时间 0.06 秒 CPU 时间 0.04 秒 例例2.23 遗漏分号。遗漏分号。data ainputx y;z=x+y;list;cards;1 23 45 6;run;词义错词义错 例例2.26 变量名拼写错。变量名拼写错。proc print data=ResDat.Idx000001(obs=10);var data clpr;/*将变量名Date拼成Data*/run;日志窗口信息:7 proc print data=ResDat.Idx000001(obs=10);NOTE:正在写入 HTML Body(主体)文件:sashtml.htm8 var data clpr;/*将变量名Date拼成Data*/ERROR:变量 DATA 没有找到。9 run;NOTE:SAS 系统由于错误而停止了该步的处理。NOTE:“PROCEDURE PRINT”所用时间(总处理时间):实际时间 0.71 秒 CPU 时间 0.20 秒运行错运行错 例例2.28 非法的数学运算。非法的数学运算。data A;input Stock$Money Price;vol=Money/Price;cards;600001 1329 6.3000895 2000 0;run;例中,0作除数是非法的数学运算。数据错数据错 例例2.29 数值变量读字符值。数值变量读字符值。data A;input Name$Age;cards;Wang 35 Zhang A2 Hu 22 ;proc print;run;10 data A;11 input Name$Age;12 cards;NOTE:对 Age 无效的数据(在行 14 13-14 中)。RULE:-+-1-+-2-+-3-+-4-+-5-+-6-+-7-+-8-+-9-+-14 Zhang A2Name=Zhang Age=._ERROR_=1 _N_=2NOTE:数据集 WORK.A 有 3 个观测和 2 个变量。NOTE:“DATA 语句”所用时间(总处理时间):实际时间 0.09 秒 CPU 时间 0.06 秒16 ;17 proc print;18 run;NOTE:从数据集 WORK.A 读取了 3 个观测。NOTE:“PROCEDURE PRINT”所用时间(总处理时间):实际时间 0.25 秒 CPU 时间 0.07 秒日志窗口信息:SAS输出输出 1-SAS日志日志2-程序结果程序结果 3-SAS 控制台日志控制台日志 SAS程序程序 SAS程序由多个SAS语句构成。SAS程序中的语句可分为两类步骤:数据步,用来处理输入数据;过程步,通过一系列SAS语句来调用和执行程序,通常以一个SAS数据集作为输入数据。书写规则书写规则 SAS语句的书写规则灵活自由:语句可在行的任一列开始;一个语句可以分写为多行;多个语句可以写在同一行;语句中各项之间至少用一个空格或特殊字符隔开;应遵守的书写规则:不同程序步间留空行;每条语句都要另起行。比较规范的书写有助于阅读和检查,还可以减少书写错误。注释语句的两种格式:/*注释内容*/*注释内容;