04DATA步数据集操作_讲义
- 格式:ppt
- 大小:1.50 MB
- 文档页数:86
第十五课用在DATA步的控制语句DA TA步的基本概念、流程和有关文件的操作语句我们前面已介绍。
但我们所介绍的DA TA步中的SAS语句都是按语句出现的次序对每一个观测进行处理。
有时需要对一些确定的观测跳过一些SAS处理语句,或者改变SAS语句的处理次序,就需要用到DA TA步中的控制语句,实现SAS程序的分支、转移和循环等改变处理次序的功能。
SAS系统提供的控制语句从实现功能的角度看主要有以下五大类:●实现循环(DO语句)●实现选择(SELECT语句)●实现分支(IF语句)●实现转移(GOTO语句)●实现连接(LINK语句)一.实现循环(DO语句)循环程序中使用DO语句的主要形式有四种,如下所示:●DO语句的程序格式之一:IF条件表达式THEN DO ;一些SAS语句;END ;●DO语句的程序格式之二:DO 变量=开始值TO 终值BY 步长值;一些SAS语句;END ;●DO语句的程序格式之三:DO WHILE (条件表达式);一些SAS语句;END ;●DO语句的程序格式之四:DO UNTIL (条件表达式);一些SAS语句;END ;DO WHILE 和DO UNTIL语句中的表达式是用括号括起来的。
两种循环程序格式的区别是,对条件表达式的判断位置。
DO WHILE是在循环体的开头,而DO UNTIL是在循环体的结束,也就是说DO UNTIL至少执行循环体中一些SAS语句一次。
下面我们举例来说明DO语句的使用。
1使用循环DO组产生随机数数据集例如,我们需要产生一组均匀分布的随机数流的数据集,程序如下:Data DoRanuni ;seed = 20000101 ;Do I = 1 to 10 by 2 ;X1=ranuni(seed ) ;X2=ranuni(seed ) ;Output ;End ;Proc print data=DoRanuni;Run ;程序中的X1和X2都采用是相同种子变量值SEED=20000101来产生的均匀分布的随机数流。
sasdata语句(实用版)目录1.SAS 数据步的基本概念2.SAS 数据步的语法结构3.SAS 数据步的应用实例正文1.SAS 数据步的基本概念SAS(Statistical Analysis System,统计分析系统)是一种广泛应用于数据处理、分析和建模的软件。
在 SAS 中,数据步(data step)是用于读取、整理和操作数据的基本步骤。
数据步是 SAS 程序的核心部分,它可以从各种数据源获取数据,对数据进行清洗和整理,并将处理后的数据存储到 SAS 数据集中。
2.SAS 数据步的语法结构SAS 数据步的基本语法结构如下:```data 数据集名;```其中,“数据集名”是自定义的数据集名称,可以由字母、数字和下划线组成。
在数据步中,可以使用各种 SAS 函数和语句对数据进行处理。
以下是一个简单的 SAS 数据步示例:```data example;infile "data.csv" dlm="," firstobs=2;input var1 var2 var3;output;```在这个示例中,我们从名为“data.csv”的 CSV 文件中读取数据,并将数据存储到名为“example”的 SAS 数据集中。
3.SAS 数据步的应用实例下面是一个 SAS 数据步应用实例,用于从 CSV 文件中读取数据并计算数据的平均值:```data example;infile "data.csv" dlm="," firstobs=2;input var1 var2 var3;compute mean = var1 + var2 + var3;output;```在这个示例中,我们首先从 CSV 文件中读取数据,然后使用“compute”语句计算数据的平均值,并将结果存储到名为“mean”的新变量中。
最后,我们将处理后的数据输出到 SAS 数据集中。
第二章SAS 语言2.1 2.2 2.3 2.4SAS语言概述数据步全程语句过程步2.2.1 用DATA步创建数据集方式一:直接输入方式DATA<数据集名>;INPUT<变量名1>[$] <变量名2>[$]… <变量名k>[$]; [其他数据步语句];CARDS;d11 d12 (1)d21 d22 (2)…. …[ ; ]RUN;1. DATA语句[格式] 逻辑库名.数据集名;[功能] 标志数据步的开始,并定义新建数据集的名称。
2. INPUT语句[功能]为相应数据定义变量;告知SAS如何读取数据3. CARDS语句[功能]表明后面是数据行;●cards必须与input配合使用;●在一个data步中只能使用一个cards;●分号单独占用一行。
直接输入方式data temp1;input name$ age@@;cards;Tom 34 johny 22 mary 34Susan 26 Dora 29 Young 30;run ;行保持符@@:便于接着读入后续的数据数据步开始有未读入的观测值吗?用数据读入语句读入一个观测值用其它语句对观测值进行运算或处理把当前的观测值写入数据集数据集建立完毕,开始下一个数据步或过程步YN读数据流程从方式二:外部文件读入数据集DATA <数据集名>;INFILE '<文件名>';INPUT <变量名1> <变量名2>… <变量名k>;RUN;data temp2;infile ‘d:\mydata\stud.txt’;input id $ name $ sex $ age hometown $ ;run;不要忘记引号●INFILE 语句用于从外部文件读入数据,必须出现在INPUT 语句之前。
●文件名包括盘符和路径;●文件中不包含变量名。
2.2.2 定义变量语句自由格式【例2-2】读取自由格式数据。
第十五课用在DATA步的控制语句DA TA步的基本概念、流程和有关文件的操作语句我们前面已介绍。
但我们所介绍的DA TA步中的SAS语句都是按语句出现的次序对每一个观测进行处理。
有时需要对一些确定的观测跳过一些SAS处理语句,或者改变SAS语句的处理次序,就需要用到DA TA步中的控制语句,实现SAS程序的分支、转移和循环等改变处理次序的功能。
SAS系统提供的控制语句从实现功能的角度看主要有以下五大类:●实现循环(DO语句)●实现选择(SELECT语句)●实现分支(IF语句)●实现转移(GOTO语句)●实现连接(LINK语句)一.实现循环(DO语句)循环程序中使用DO语句的主要形式有四种,如下所示:●DO语句的程序格式之一:IF条件表达式THEN DO ;一些SAS语句;END ;●DO语句的程序格式之二:DO 变量=开始值TO 终值BY 步长值;一些SAS语句;END ;●DO语句的程序格式之三:DO WHILE (条件表达式);一些SAS语句;END ;●DO语句的程序格式之四:DO UNTIL (条件表达式);一些SAS语句;END ;DO WHILE 和DO UNTIL语句中的表达式是用括号括起来的。
两种循环程序格式的区别是,对条件表达式的判断位置。
DO WHILE是在循环体的开头,而DO UNTIL是在循环体的结束,也就是说DO UNTIL至少执行循环体中一些SAS语句一次。
下面我们举例来说明DO语句的使用。
1使用循环DO组产生随机数数据集例如,我们需要产生一组均匀分布的随机数流的数据集,程序如下:Data DoRanuni ;seed = 20000101 ;Do I = 1 to 10 by 2 ;X1=ranuni(seed ) ;X2=ranuni(seed ) ;Output ;End ;Proc print data=DoRanuni;Run ;程序中的X1和X2都采用是相同种子变量值SEED=20000101来产生的均匀分布的随机数流。
Sas基本操作1 数据集的建立主要语句:Data + 数据集名称Input + 输入变量;Cards;列出数据;Run;注意事项(1)Sas数据集的每一行是一个样本,称为观测,每一列是一个变量。
Sas系统按每个观测向量逐行进行数据处理。
(2)Data + 数据集名称;此语句用于给数据集赋予名称。
数据集的名称可以是任意不超过8个字符的字符串,但第一个字符必须是字母;(3)Input + 输入变量;此语句指明数据集中的变量名称,可以使数值型,也可是非数值型,如果输入变量是非数值型,须在变量名后空一格打上“$”符。
输入变量的格式有两种,我们主要要求掌握自由格式输入。
自由格式输入:输入的变量名依次列出,中间用至少一个空格隔开。
如果每行数据多于一个观测,在input语句后要加“@@”表示指针不换行。
Input id name $ var1 var2 var3 (var1-var3)格式化输入:a)通过指定每个变量的取值所占据的列数输入相应变量的值。
在每个变量名后,空一格指出该变量的值所占据的列数。
Input id 1-2 name $ 4-20 var1 22-40b)W.d格式,这里的W表示变量取值所占据的总列数,d表示从右到左小数部分的列数。
Input id 2. name $ 10. var1 5.2如果变量间需空格,可在其后写上“@n”或“+m”“@n”表示指针移到第n列“+m”表示指针跳过m列(4)Cards;此语句表示给出数据,数据格式需与input一致。
对于非数值变量,若按自由格式输入,每个变量的值应用不多于8个字符的字符串表示且不能有空格;若按固定格式输入,每个变量的值可用不多于200个字符的字符串给出。
2. sas数据集的输出主要语句:Proc printer data=数据集名;Run;、3. 两个数据集的合并(1)两个数据集的串接Data 新数据集名;Set 两个原数据集名;Run;(2)两个数据集的并接Data 新数据集名;Merge 两个原数据集名;Run;4. 变量值的排序Proc sort data=数据集名;By 变量名;Run;注:(1)如果按从大到小排列,在变量名前加descending;5. 删除观测Data 数据集名;Set 原数据集名;If 条件then delete;Run;6. 删除变量Data 数据集名;Set 原数据集名;Drop x 或keep y;Run;7利用运算产生新数据集;Data 数据集名;Set 原数据集名;X=原数据集变量的运算;Run;注:(1)新数据集中包含原数据集的变量和数据;(2)数学运算符号,数学函数尽量记忆。