SAS软件应用指南 第四章、第五章.

Slides:



Advertisements
Similar presentations
實踐國中綜合活動. 我們的團隊 輔導 — 邱敏芳主任、洪穎馨組長、朱孝安組 長、徐維莉師、蔡嘉容師、蔡燕娟師 童軍 --- 蘇月琴團長、蔡盟玉師 家政 --- 阮雅倩師、李怡慧師、蔡佩瑩師.
Advertisements

第3-2章 类与 对象 Java类的特性 教学内容: 类的私有成员与公共成员 方法的重载 构造方法 实例成员与静态成员 重点: 重载 难点:
都是作假惹的禍 假 GO ~.
SPSS 軟體與統計應用 Ya-Yun Cheng, How-Ran Guo
近年来,出现了一些制作粗糙、违背史实甚至常理的“抗战雷剧”,社会上也出现了一股“戏说”抗战剧的不良风气。
主題─ 悌 授課教師:謝宛琳.
國立臺灣大學 103 學年度轉學生招生監試說明會 教務處課務組 胡淑君.
♥走馬瀨露營心得分享 二年七班 19號 鄭宜欣.
Dr. Baokun Li 经济实验教学中心 商务数据挖掘中心
客家围龙屋 想知道梅州有哪些好吃好玩的吗?那接下来就让我带你去看吧!!GO。。。 梅州游乐篇.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
新竹二日遊 準備出發囉!!GO.
浪漫 碰撞 蜕变 专题八 19世纪以来的文学艺术.
德国波恩明斯特广场修建的贝多芬铜像( 1845年)
99年成語200題庫(21-40).
第十二章 建筑结构抗震基本知识 第 三 讲 教学目标: 1.掌握框架结构的抗震措施;
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
印度的鼻環美女 修改製作:pan0524 日期:
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
网络游戏对大学生生活的影响 英本1班 鞠申镅 汪晨茹 沈秋云 元文杰 段祺琪.
电力窃漏电用户自动识别 2017/4/10.
第十一讲 唐代政治大势 一、李渊起兵与唐朝的建立 二、从贞观之治到开元盛世 三、从安史之乱到宦官、党争.
綜合活動活動學習領域的教學應用 愛的路上 EZ GO !!.
飛天小女警遊縣警局.
主題樂園的開發評估與規劃.
公司法(六) 股份有限公司 1.
復興國中95學年度生涯檔案製作簡介.
SAS 基础 SAS 功能及历史(略) INSIGHT,Analyst,Program 是统计分析的三种方法
新世代計算機概論 第14章 程式語言.
欢乐颂 麻城市思源实验学校
【PHP程式設計】 實作一:計算BMI.
第7章 结构体、联合体和枚举类型 本章导读 本章主要知识点 《 C语言程序设计》 (Visual C++ 6.0环境)
C程序设计 第9章 自定义数据类型 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
内容提要 对象的生命周期 构造函数 析构函数 拷贝构造函数. 常宝宝 北京大学计算机科学与技术系
Dr. Baokun Li 经济实验教学中心 商务数据挖掘中心
补充内容 结构体 概述 定义结构体类型和定义结构体变量 结构体变量的引用 结构体变量的初始化 指针与结构体 用typedef定义类型的别名.
第一次随堂作业(10.16) 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九章 结构体和共用体 结构体的定义 结构体的使用 共用体的定义 共用体的使用 主讲:李祥 时间:2015年10月.
程式撰寫流程.
演算法與資料結構 製作單位: 高雄市立高雄中學.
陳維魁 博士 儒林圖書公司 第五章 控制結構 陳維魁 博士 儒林圖書公司.
Peking University SAS Club
複詞三胞胎(偏義複詞、同義複詞、反義複詞)
第十章 用户自定义数据类型 目录 学生信息管理系统的开发 结构体数据类型的概述 结构体变量的使用 结构体数组
第十章 结构体与链表 西安工程大学.
Ch04 VB.NET的流程控制 網頁程式設計.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
圖畫成語 Go !Go ! Go ! 遊戲說明.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
故事不一定要有結局.
SAS软件应用基础 SAS过程步.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
響應立法院親民黨團擴大舉辦向全民徵文 《若我有8800億,要怎麼改造台灣!?》
學生端 操作說明.
Logistic回归 Logistic regression 研究生《医学统计学》.
Do While 迴圈 東海大學物理系‧資訊教育 施奇廷.
天澤堂兒童三色GO 高小級主日學 導師:李志誠 黃少華 2011年10月8日
戒波罗蜜多.
第9章 C++程序设计初步 9.1 C++的特点 9.2 最简单的C++程序 9.3 C++的输入输出 9.4 函数的重载
作文教學--遊記篇 適用年級:五年級 教學者:鄭文娟老師.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
安排座位.
SAS 統計程序實作 PROC MEANS (一個母體)
Presentation transcript:

SAS软件应用指南 第四章、第五章

第四章 数据步程序设计 数据步的程序代码一般都是顺序执行,然而,数据步中有一些控制语句,如分支、循环语句,可控制程序的执行流程。 IF 第四章 数据步程序设计 数据步的程序代码一般都是顺序执行,然而,数据步中有一些控制语句,如分支、循环语句,可控制程序的执行流程。 IF DO … END GOTO RETURN

4.1 IF 语句 两种IF语句: ●条件IF语句,带有一个THEN子句和ELSE子句(可选)。只对满足IF语句中所指定条件的观测值才执行SAS语句。如果THEN子句不被执行,那么可选择的ELSE子句给出另一种替换作用。 ●子集IF语句,无THEN子句。用来使SAS系统继续处理那些满足IF 子句中条件的观测值。

IF-THEN/ELSE语句 格式: IF expression THEN statement; <ELSE statement;> 说明: SAS系统首先对跟在IF后的表达式(expression)求值,如果结果为真(非零),则执行THEN后的语句。如果为假,则去执行ELSE后面的语句,如果没有ELSE子句,则执行下一个语句。 注意: 在THEN之后只允许使用一个语句,如果要执行几个语句,则应用DO-END把要同时执行的几个语句用括起来。 IF-THEN/ELSE 语句可以嵌套 。

4.2 GO TO (GOTO)语句 格式: GOTO label; 或 GO TO label; 说明: GO TO (或者GOTO)语句告诉SAS系统,立即跳向在GOTO语句中指出的语句, 并从那一点开始接着执行。GO TO语句和跳向的目标都必须在一个DATA步中,跳向的目标语句由GO TO语句和目标语句中的标号来标明。 label: 标识GOTO目标的语句标号。

4.3 RETURN语句 格式:RETURN; RETURN语句的功能是将当前观测值输出到数据集,然后立即将程序流程返回DATA步的开始处,而不执行其后的语句。 GO TO语句经常被DO-END语句代替。

4.4 循环 DATA _NULL_; 在数据步的一次执行中反复地执行某一部分语句,这种程序的反复执行称为循环。 I=1; 4.4 循环 在数据步的一次执行中反复地执行某一部分语句,这种程序的反复执行称为循环。 DATA _NULL_; I=1; K: PUT I; I=I+1; IF I<=10 THEN GOTO K; RUN; DO I=1 TO 10; PUT I; END;

4.4 循环 循环语句的格式: DO 指针变量=初值 TO 终值 BY 增量; END ; 说明: 4.4 循环 循环语句的格式: DO 指针变量=初值 TO 终值 BY 增量; END ; 说明: DO语句组第一次执行时,指针变量等于初值。当终值和增量都存在时,则每执行到 END语句时, 指针变量+增量作为新的指针变量,并与终值作比较,直到指针变量的值变化超过终值时才停止执行DO语句组。最后一次执行完后,指针变量值超过终值。

4.4 循环 如果仅有初值,则直到一个语句指示跳出循环体才停止循环。如果初值终值均未规定,语句组执行一次。如果未规定增量,增量的缺省值为1。初值和终值是在第一次执行循环以前计算的。

4.4 循环 DATA _NULL_; DO I=1 TO 10; PUT I=; END; RUN; 4.4 循环 DATA _NULL_; DO I=1 TO 10; PUT I=; END; RUN; PUT语句中变量名后面使用等号,是对输出值用变量名来标识。称为命名输出。 如:PUT I=;

4.4 循环 双重循环(循环嵌套): DO…; …… END; 内循环 外循环

4.4 循环 双重循环(循环嵌套): DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X=I*J; 4.4 循环 双重循环(循环嵌套): DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X=I*J; PUT @(J*5) X @; END; PUT; RUN;

4.4 循环 DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X =I*J; 4.4 循环 DATA _NULL_; DO I=1 TO 9; DO J=1 TO I; X =I*J; PUT J 1. '*' I 1. '=' X 2. +2 @; END; PUT; RUN;

4.5 其它程序设计中常用语句 4.5.1 DELETE 语句 格式:DELETE; DELETE语句告诉SAS系统停止处理当前的观测值, 且该观测值不被写入正在建立的数据集中,SAS系统返回DATA步的开始处进行下一次执行。

4.5.2求子集的IF语句 格式: IF expression; 使用求子集IF语句,使SAS系统仅继续处理符合IF语句条件规定的观测值, 因而所得到的数据集是原数据集的子集。

4.5.2求子集的IF语句 如果表达式为真(非零且不缺项),SAS系统继续为正在建立的观测值执行DATA 步中的语句。如果表达式的值是假(0或缺项),SAS系统马上返回到DATA步的开始,去进行另一次执行而不输出上一个观测值。 如: IF SEX=‘F’; 等同于(IF SEX=‘M’ THEN DELETE; 在结果数据集中所包含的仅仅是SEX的值为‘F’的那些观测值。

4.5.2求子集的IF语句 DATA A ; DATA B; INPUT NAME$ SEX$ @@; SET A; IF SEX='F'; CARDS; ZHANG F LI M SUN F WANG F LIU M ZHAO M PROC PRINT; RUN; DATA B; SET A; IF SEX='F'; PROC PRINT; RUN;

第五章 SAS文件操作 建立永久数据集:将数据集存盘 数据排序:SORT过程,将数据集中数据排序 数据集连接:SET语句,多数据集纵向连接 数据集合并:MERGE语句,多数据集横向合并 其他常用语句:PUT、FILE、OUTPUT SAS文件管理命令及过程

5.1 建立永久SAS数据集 数据库:存储在一个目录下的许多文件组成。 库标记(一级名):是SAS文件的物理存储位置(目录)。在SAS系统中为一个统一的逻辑标记。 临时库:名为WORK,它在每次启动SAS后自动生成,结束SAS后库中的数据自动删除。 永久库:使用LIBNAME语句指定永久库的库标记,永久库中的所有文件将被保留 。 启动SAS时,SAS自动指定两个库标记: SASUSER:永久库,不必用LIBNAME指定。 WORK:临时库,可省略库标记(缺省数据库)。

建立永久数据集的关键语句 LIBNAME语句 DATA 语句 建立永久数据集与建立临时数据集所用的语句基本相同,除上述二语句之外,其余语句的用法与作用均不变。

5.1.1 LIBNAME语句 格式:LIBNAME 库标记 ’目录’; 例:LIBNAME LC ’C:\EXERCISE’; 库标记:可任意起名,目录必须用引号括起来。 LIBNAME PAN ‘D:\PANYAN’; LIBNAME LA ‘A:’;

5.1.2 DATA语句 建立永久数据集: 用LIBNAME语句指定SAS库标记。 在DATA语句中写出一级和二级名(用.分隔) 例:LIBNAME LA ’A:’; DATA LA.AA; …… LIBNAME PAN ‘D:\PANYAN’; DATA PAN.ABC;

永久数据集的扩展名 SAS数据集文件的扩展名为.SD2,图标为: 。 在同一个LIBNAME语句中可定义多个库标记。 LIBNAME LA ‘A:’ LC ‘C:\’;

永久数据集的调用 调用永久数据集: LIBNAME LA ‘A:’; PROC PRINT DATA= LA.AA;

SAS使用SORT过程对数据集中的数据进行排序。 SORT过程使用如下二个语句: 5.2 数据排序 SAS使用SORT过程对数据集中的数据进行排序。 SORT过程使用如下二个语句: PROC SORT 语句 BY 语句

5.2 数据排序 5.2.1 PROC SORT 语句 格式: PROC SORT [选择项]; PROC SORT语句的选择项有二个: 5.2 数据排序 5.2.1 PROC SORT 语句 格式: PROC SORT [选择项]; PROC SORT语句的选择项有二个: DATA=规定用于排序的数据集。 OUT= 结果数据集的名称,缺省(即省略OUT=选择项),则复盖原数据集。

5.2 数据排序 5.2.2 BY 语句 格式: BY [DESCENDING] 变量 ... ; BY语句指出用以排序的变量名。 5.2 数据排序 5.2.2 BY 语句 格式: BY [DESCENDING] 变量 ... ; BY语句指出用以排序的变量名。 如果需要按BY变量值降序排列,则在变量名前要用DESCENDING指出。 如BY语句中给出多个变量,则先按前一变量值进行分组,在各组中再按后一变量值排序。

例: data score; input class num sex$ s1-s3 @@; total=sum(of s1-s3); cards; 1 1001 m 79 96 87 1 1002 f 69 78 92 2 1003 f 68 87 93 1 1004 m 88 93 90 2 1005 m 76 89 88 run;

PROC SORT DATA=SCORE OUT=CS2; BY CLASS ; PROC PRINT; RUN; BY CLASS DESCENDING TOTAL;

5.4 数据集连接 格式:SET 数据集名 …; 5.4.1 变量相同 5.4.2 变量不同 5.4 数据集连接 SET语句可以将两个或更多的数据集连在一起,形成一个单独的大的数据集。“纵向连接” 格式:SET 数据集名 …; 5.4.1 变量相同 新数据集的变量即原数据集的变量,观测值个数是各个数据集中观测值个数的和。 5.4.2 变量不同 新数据集将包括所有的变量。从某个数据集获得的观测值中,对于该数据集中没有的变量将用缺项值填充。

举例: DATA TWO; SET SCORE CS2; PROC PRINT; RUN;

举例: DATA CS1; SET SCORE; DROP NUM; RUN; DATA TWO; SET CS1 CS2; PROC PRINT;

5.4.3 交叉连接 如果两个数据集D1和D2已经按DEP值排过序,在连接两数据集时想将有相同DEP值的数据连在一起,可使用BY语句进行交叉连接。 例如: PROC SORT DATA=D1 OUT=SORTD1; BY DEP; PROC SORT DATA=D2 OUT=SORTD2; DATA D1D2; SET SORTD1 SORTD2;

5.5 数据集合并 格式:MERGE 数据集表; “横向合并” 5.5.1 一对一合并 5.5 数据集合并 MERGE语句将两个或多个SAS数据集中的观测值合并成一个新数据集中的单个的观测值。 格式:MERGE 数据集表; “横向合并” 5.5.1 一对一合并 不用BY语句时,MERGE 语句是将按观测的序号进行合并。新数据集中观测值数为 MERGE语句中所列出的各数据集中观测值数的最大者。如果某个数据集的观测值用完,则该数据集观测值各变量的值由缺项值代替。 如果一个变量在多个数据集中出现,则在新的数据集中,该变量名只出现一次。且该变量的值为在MERGE语句中列在最右边的有相应变量数据集中的值。

一对一合并举例 data student; input num name $ sex$; cards; 89100 lanyin f 89101 hanyang m 89102 sunlin f 89103 zhangli m data test; input t1-t3; cards; 89 76 90 78 88 74 96 98 92 data studtest; merge student test; proc print; run;

5.5.2 匹配合并 为实现匹配合并,对于所有要合并的数据集要求它们至少有一个变量是相同的,并且每个数据集都应按该变量排过序。BY语句被用来标识匹配变量。 对匹配变量的处理(BY变量) 匹配合并操作将从观测值具有当前BY值的每一个数据集中合并所有数据。 当一个输入数据集用尽一个BY组中的观测值时,在该BY组中的最后一个观测的值被保留且用来同其它数据集的该BY组中的剩余观测值的值合并。如果一个输入数据集不包括某一BY组中的任何观测值,则该数据集提供缺项值给新数据集。

匹配合并举例 proc print data=student; proc print data=test; data mer; input num t1-t3; cards; 89100 89 76 90 89102 78 88 74 89103 96 98 92 proc sort data=student; by num; proc sort data=test; proc print data=student; proc print data=test; data mer; merge student test; by num; proc print; run;

5.6 输出信息 在数据步中,输出信息使用PUT语句。 格式:PUT [说明]...; 5.6 输出信息 在数据步中,输出信息使用PUT语句。 格式:PUT [说明]...; [说明]描述如何将一个变量的值或一个字符串写入输出行。 变量值有三个基本输出形式: 列、列表和格式形式。还可以使用指针控制方式输出。 1. 列表形式: 在PUT 语句中,按顺序列出变量。 如: PUT NAME WEIGHT SEX; 输出时,各变量值按其长度依次列出。 2. 列形式: 在变量名后面给出输出列的范围。 如:put name 20-30 sex 1 majority 5-15;