SAS编程_SET使用小结_070522
- 格式:doc
- 大小:158.50 KB
- 文档页数:8
set的用法归纳总结Set是一种常见的数据结构,用于存储不重复的元素。
它的用法非常灵活,可以在各种编程语言中使用,比如Python、Java等。
本文将对Set的用法进行归纳总结,帮助读者更好地理解和应用这一数据结构。
一、Set的定义和特点Set是一种无序的集合,其中不会包含重复的元素。
它的定义类似于数学中的集合,可以包含任意类型的对象,如整数、浮点数、字符串等。
Set中的元素没有固定的顺序,且不能通过索引访问。
二、Set的创建和初始化在大部分编程语言中,可以使用一对大括号或Set()方法来创建和初始化一个Set。
Python示例:```my_set = {1, 2, 3}```Java示例:```Set<Integer> mySet = new HashSet<>();```三、Set的基本操作1. 添加元素:使用add()方法向Set中添加新元素。
Python示例:```my_set.add(4)```Java示例:```mySet.add(4);```2. 删除元素:使用remove()方法删除Set中的指定元素。
Python示例:```my_set.remove(3)```Java示例:```mySet.remove(3);```3. 判断元素是否存在:使用in关键字判断指定元素是否存在于Set 中。
Python示例:```if 2 in my_set:print("元素存在")```Java示例:```if (mySet.contains(2)) {System.out.println("元素存在");}```四、Set的操作和方法1. 遍历Set:可以使用for循环或迭代器遍历Set中的所有元素。
Python示例:```for item in my_set:print(item)```Java示例:```for (int item : mySet) {System.out.println(item);}```2. 获取Set的大小:使用len()方法获取Set中元素的数量。
SAS基础语法总结一、DATA语句DATA语句的作用是表明数据步的开始并给出数据集的名称。
DATA语句的格式为:DATA 数据集的名称;数据集的名称必须以英文字母开始,最长不超过8个字符。
二、CARDS语句CARDS语句的作用是与“;”呼应,标志数据行的开始与结束。
CARDS语句的格式为:CARDS;数据行;如果使用CARS语句,在CARDS的后面必须紧跟数据行,并且在一个数据步中最多只能使用一个CARDS语句。
三、INPUT 语句INPUT语句的作用是描述输入记录中的数据,并把输入值赋给相应的变量。
INPUT语句的格式为:INPUT 数据的变量名、顺序及类型;用INPUT语句是为了读取外部文件的数据或跟在CARDS语句后面的数据。
SAS默认用INPUT语句读取的是数值类型变量的值。
若在变量后加’$’,则该变量为字符串类型变量。
为从一行读入多个观测值,应使用行保持符’@@’限制度数指针,使其保持在这一行上读数,知道数据读完为止。
例如:Input x y@@;Cards;2 3 4 5 6 7 8;四、INFILE语句Infile语句的作用是指明外部数据文件的名称,并从这个外部数据文件中读取数据。
INFILE语句的格式为:INFILE ‘外部数据文件名’;例如,在D盘上有一个名称为xiao.txt的数据文件,其中数据排列为:A 3.16B 2.9 B 5.8 B 3 A 4.9 A 4.17用INFILE语句读取数据的代码为:Data ex;Infile ‘D:xiao.txt’;Input z$ x@@;Proc print;Run;五、SET语句SET语句的作用是按照指定的条件从指定的数据集中读取数据机那里新的数据集获奖两个数据集中的观测值纵向连接建立新的数据集。
SET语句的格式为:SET 数据集名表;例如,从数据集EX中读取数据建立新的数据集EX1,可编辑语句:DATA EX1;SET EX;将两个数据集D1和D2中的观测值纵向连接建立新的数据集D3,可编辑语句:DATA D3;SET D1 D2;六、MERGE语句MERGE语句的作用是将两个数据集中的各个观测值横向合并建立新的数据集。
SAS实用程序编写技巧
一、结构化的SAS程序
1、给每个步骤定义一个容易记忆的名称。
这样可以在调试程序时快
速找到问题。
2、使用宏,特别是用于重复步骤的宏,可以有效减少程序的长度,
并且可以更轻松地修改数据处理步骤。
3、利用SAS文件类型,可以改变不同的文件类型,从而使程序的表
达更加专业和简洁,同时可以提高程序的可读性,并减少编码时间。
4、使用通配符,可以提高程序的灵活性和可扩展性。
同时,可以大
大减少程序中的重复代码。
5、使用系统引用。
在程序的各个位置添加系统引用提高可维护性,
可以更轻松地修改程序以实现不同的功能。
6、使用程序逻辑变量可以动态地控制不同的处理步骤。
7、在调试过程中可以使用display和put语句来查看变量的值,及
时发现错误以保证程序的正确性。
8、明确定义程序变量的范围和数据类型,以确保程序正确的工作。
9、使用SAS标准的文件输入/输出,可以减少代码量,提高工作效率。
10、使用管理变量,可以有效地控制程序的调试过程。
11、使用SAS程序语句中的同义词可以更好地理解程序。
二、SAS变量操纵技巧
1、使用substr函数来截取字符串中的特定部分,这样可以更快捷地截取所需信息。
2、使用scan函数从一个字符串中截取多个字段。
sas实践总结与体会在sas实践中,我收获了很多经验和体会。
不仅提升了我的数据处理能力,还加深了我对统计学和机器学习的理解。
以下是我对sas实践的总结和体会。
1. 掌握基本操作在实践中,我首先学会了sas的基本操作。
掌握了数据导入、数据清洗、数据变换等基本技能。
通过实际操作,我熟悉了sas的界面和命令,能够快速准确地实现各种数据处理任务。
2. 进行统计分析sas提供了丰富的统计分析功能,我通过实践学会了如何进行描述性统计、假设检验、方差分析等常用分析方法。
同时,我也学习了如何绘制图表、生成报告,将统计分析结果直观地展示出来,更好地理解数据。
3. 进行机器学习建模sas不仅可以进行传统的统计分析,还可以进行机器学习建模。
我在实践中了解了机器学习的基本原理和常见算法,例如线性回归、决策树、随机森林等。
通过使用sas进行建模,我可以对数据进行预测和分类,提取有用的信息。
4. 解决实际问题在实践中,我遇到了很多实际问题,例如缺失值处理、异常值检测、特征选择等。
通过sas的实践,我学会了如何针对不同问题选择合适的处理方法,并进行有效的解决。
sas提供了很多强大的函数和技术,帮助我解决了许多实际难题。
5. 发现数据的价值通过sas的实践,我认识到数据的重要性和价值。
数据可以帮助我们了解问题的本质,揭示事物间的规律性。
通过对数据进行处理和分析,我们可以从中发现有用的信息,支持决策和推动业务发展。
总之,通过sas的实践,我不仅增加了数据处理和分析的能力,还提升了解决实际问题的能力。
sas是一个强大的数据处理和分析工具,对于从事数据分析和机器学习的人来说,是必备的技能之一。
通过不断实践和学习,我相信我会在sas的应用上越来越熟练,为实际问题的解决提供更好的支持。
sas实践总结与体会在当今数字化的时代,数据的分析和处理变得愈发重要。
SAS 作为一款功能强大的数据分析软件,为我们提供了丰富的工具和方法来应对各种数据相关的任务。
通过一段时间的 SAS 实践,我积累了不少宝贵的经验,也有了许多深刻的体会。
首先,SAS 的学习曲线并非平坦。
初接触时,面对其众多的功能模块和复杂的语法规则,确实感到有些不知所措。
但随着不断的学习和实践,逐渐发现只要掌握了一些核心的概念和常用的命令,就能逐渐上手并完成一些基本的数据分析任务。
在实际的项目中,数据的导入和清理是第一步,也是至关重要的一步。
有时候,我们拿到的数据可能存在缺失值、异常值或者格式不一致等问题。
SAS 提供了一系列强大的工具,如 PROC IMPORT、PROC SQL 等,帮助我们将数据顺利地导入到系统中,并进行初步的筛选和整理。
在这个过程中,需要耐心和细心,确保数据的质量和准确性。
例如,有一次在处理一个包含大量销售数据的文件时,发现其中部分产品的价格出现了负数,经过仔细检查,原来是数据录入时的错误。
通过使用 SAS 的条件判断和数据替换功能,成功地纠正了这些错误,为后续的分析打下了坚实的基础。
数据探索和可视化也是 SAS 实践中的重要环节。
通过使用 PROC SGPLOT 等过程,我们可以直观地了解数据的分布、趋势和关系。
比如,绘制柱状图来比较不同地区的销售业绩,或者绘制折线图观察产品销量随时间的变化。
这些可视化的结果能够帮助我们快速发现数据中的规律和异常,从而提出有针对性的分析思路。
在进行数据分析时,SAS 的统计分析功能发挥了巨大的作用。
无论是描述性统计分析,还是假设检验、回归分析等,SAS 都提供了相应的过程和方法。
例如,在研究消费者年龄与购买行为之间的关系时,使用了线性回归分析,通过 SAS 输出的结果,不仅能够得到回归方程的系数和显著性水平,还能对模型的拟合优度进行评估。
这让我们能够准确地判断变量之间的关系,并做出合理的预测和决策。
SAS 8.2的界面中间是三个并排(或层叠)的窗口,那个叫做Program Editor 的窗口(窗口标签为Editor)就是用来输入SAS语句的,编程操作的所有内容都是在该窗口内完成的。
(一)数据集(dataset)和库统计学的操作都是针对数据的,SAS中容纳数据的文件称为数据集,数据集又包含在不同的库(暂且理解为数据库吧)中。
SAS中的库分为永久性和临时性两种。
顾名思义,存在于永久库中的数据集是永久存在的(只要你不去删除它),临时库中的数据集则在你退出SAS后自动被删除。
至于SAS中库的概念,最简单的理解就是一个目录,一个存放数据集的目录。
数据集的结构完全等同于我们一般所理解的数据表,由字段和记录所构成,在统计学中我们习惯将字段称为变量,在后面的内容中字段和变量我们就理解为同一种东西吧!建立数据集的方法很多,编程操作中有专门的数据读入方法来建立数据集,但需要将数据现场录入,费时费力。
如果数据量大,我劝各位还是先以其它方法将数据集建好,否则程序语句的绝大部分会浪费在数据的输入上。
(二)SAS程序概述和其它计算机语言一样,SAS语言(称为SCL语言,SAS Component Language)也有其专有的词汇(即关键字)和语法。
关键字、名字、特殊字符和运算符等按照语法规则排列组成SAS语句,而执行完整功能的若干个SAS语句就构成了SAS程序。
SAS程序包括多个步骤和一些控制语句,一般情况下均包括数据步和过程步,一个或多个、数据步或过程步,它们之间任何形式的组合均可成为一段SAS程序,只要能完成一个完整的功能。
通常情况下SAS程序还包括一些全程语句,用以控制贯穿整个SAS程序的某些选项、变量或程序运行的环境。
SAS程序的语句一般以关键字开始,以一个分号结束,一条语句可占多行(SAS每看到一个分号,就将其以前、上一个分号以后的所有东东当作一条语句来处理,而不管他们处在多少个不同的行中)。
SAS语句对字母的大小写不敏感,你可以根据个人习惯决定字母的大写或小写。
sas数据操作set语句及其相关选项,widgetsset语句:set语句有什么⽤?试想如果要给数据集增加⼀列(固定列或者计算列),增加新变量或者创建⼦集下⾯给出创建新列和增加固定列data步和sql过程的办法data me(keep=name newVariable total);set sashelp.class; if sex='男';newVariable=.;total = height+weight;run;proc print noobs;run;proc sql;select name, '.'as newVariable, height+weight as total from sashelp.classwhere sex='男';quit;Set statement Type: Executable Syntax SET<SAS-data-set(s)<(data-set-option(s))>><options> Without Arguments when you do not specify an argument, the SET statement reads an observation from the most recently created data set. Arguments SAS-data-set(s): specifies a one-level name, a two-level name, or one of the special SAS data set names. (data-set-options): specifies actions SAS is to take when it reads variables or observations into the program data vector for processing. DROP= KEEP= RENAME= (execution sequence: drop>keep>rename) FIRSTOBS=(first obs to be read) OBS=(last obs to be read) IN= WHERE= Options END: creates and names a temporary variable that contains an end-of-file indicator. The variable, which is initialized to zero, is set to 1 when SET reads the last observation of the last data set listed. This variable is not added to any new data set. NOBS:creates and names a temporary variable whose value is usually the total number of observations in the input data set or data sets. If more than one data set is listed in the SET statement, NOBS= the total number of observations in the data sets that are listed. The number of observations includes those observations that are marked for deletion but are not yet deleted. POINT:specifies a temporary variable whose numeric value determines which observation is read. POINT= causes the SET statement to use random (direct) access to read a SAS data set. Details What Set Does? Each time the SET statement is executed, SAS reads one observation into the program data vector. SET reads all variables and all observations from the input data sets unless you tell SAS to do otherwise. A SET statement can contain multiple data sets; a DATA step can contain multiple SET statements按从前到后的顺序纵向堆叠数据集1-n。
sas 双set语句用法摘要:1.SAS简介2.SET语句的作用3.双SET语句的用法4.实例演示5.注意事项正文:SAS(Statistical Analysis System)是一款强大的统计分析软件,广泛应用于数据处理、分析和挖掘领域。
在SAS中,SET语句用于定义和操作数据集,是进行数据分析的基础。
本文将介绍SAS双SET语句的用法,并通过实例演示其操作过程。
一、SAS简介SAS起源于20世纪60年代,由美国北卡罗来纳州大学的统计学教授布赖恩·苏特(Brian Satorius)开发。
如今,SAS已成为全球领先的数据分析解决方案提供商,为各行各业提供高质量的数据分析服务。
二、SET语句的作用在SAS中,SET语句主要用于以下几个方面:1.打开已有的数据集:使用“SET”语句可以打开已有的数据集,进行进一步的分析。
2.创建新数据集:可以使用“SET”语句创建一个新的数据集,方便进行数据处理和分析。
3.数据集的连接:通过“SET”语句可以将两个或多个数据集连接起来,进行联合分析。
4.数据集的合并:使用“SET”语句可以实现数据集的合并,从而增加分析的样本量。
三、双SET语句的用法在SAS中,双SET语句是指连续使用两个或多个SET语句进行数据处理。
双SET语句的主要作用是实现数据集的转换和操作,从而达到分析目的。
以下是一个简单的双SET语句实例:```data new;set old;if condition then;output;end;```在这个例子中,首先使用第一个SET语句打开名为“old”的数据集。
接着,根据条件判断对数据进行筛选,最后将筛选出的数据输出到名为“new”的新数据集中。
四、实例演示以下是一个双SET语句在实际数据分析中的应用实例:```data have;input age income;cards;run;data want;set have;if age > 30 then;output age income;end;run;```在这个例子中,首先使用第一个SET语句“have”创建一个包含年龄和收入的数据集。
sas 双set 语句SAS双set语句是SAS语言中用于合并和匹配数据集的强大工具。
它可以根据指定的变量将两个或多个数据集连接起来,并根据指定的条件将它们合并成一个新的数据集。
下面将详细介绍SAS双set 语句的用法和一些常见应用场景。
1. 基本用法:使用SAS双set语句合并两个数据集的基本语法如下:```sasdata new_dataset;set dataset1 dataset2;by common_variable;run;```以上代码中,new_dataset是合并后的新数据集的名称,dataset1和dataset2是要合并的两个数据集的名称,common_variable是两个数据集中共有的变量名称,用于指定合并的基准。
2. 内连接(inner join):内连接是SAS双set语句的默认连接方式,它只会保留两个数据集中共有的观测值。
通过设置SAS双set语句的选项,可以实现内连接。
例如:```sasdata new_dataset;set dataset1 dataset2;by common_variable;if not missing(variable1) and not missing(variable2);run;```以上代码中,通过添加if语句,可以实现对合并后的数据集进行筛选,只保留两个数据集中对应观测值都不为空的情况。
3. 左连接(left join):左连接是指保留左边数据集中所有的观测值,并将右边数据集中符合连接条件的观测值合并到左边数据集中。
通过设置SAS双set 语句的选项,可以实现左连接。
例如:```sasdata new_dataset;set dataset1 dataset2;by common_variable;if not missing(variable1);run;```以上代码中,通过添加if语句,可以实现只保留左边数据集中对应观测值不为空的情况。
SET语句从一个或多个SAS数据集中读取观测值并实现纵向合并。
每个SET语句被执行时,SAS就会度一个观测到PDV中。
一个DATA步可以有多个SET语句,每个SET语句又可以跟多个SAS数据集。
KEEP=变量(组) 指定变量(组)进入PDV。
DROP=变量(组) 指定变量(组)不进入PDV。
REANAME=表达式对指定的变量在PDV更换变量名。
WHERE=表达式执行PDV前满足表达式。
IN=变量如果当前表示观测属于某数据集,标识为1,否则为0。
FIRSTOBS=常数如常数=3,则从第3个观测开始读数据集。
OBS=常数如常数=4,则最后一个观测是第4个观测。
NOBS=变量把一个SET语句后所有数据集的总观测数赋值给变量1.KEEP=选项data keep;set sashelp.class(keep=name sex);run;2.WHERE表达式data where;set sashelp.class(keep=sex where=(sex='M'));run;3.IN=选项data one;input x y$@@;cards;1 a2 b3 c;data two;input x z$@@;cards;4 d5 e;data in1;set one(in=ina) two(in=inb);in_one=ina;in_two=inb;run;data in2;set one(in=ina) two(in=inb);if ina=1 then flag=1;else flag=0;run;4.FIRSTTOBS=和OBS读取数据集class的第3条观测到第5条观测。
data obs;set sashelp.class(firsttobs=3 obs=5);run;5.NOBS=选项例:取总观测数data nobs1(keep=total);set sashelp.class nobs=total_obs;total=total_obs;output;stop;run;data nobs2;if 0 then set sashelp.class nobs=total_obs;total=total_obs;output;stop;run;6.POINT=选项例:取指定的一条观测data point1;n=3;set sashelp.class point=n;output;stop;run;注:同NOBS一样,POINT后面跟变量,而不是常数。
前面讲述了如何从原始数据生成SAS数据集。
我们还可以用SET语句把一个已有数据集复制到一个新数据集,同时还可以进行修改。
比如要把数据集WORK.C9501复制为数据集SASUSER.CLS,只要用如下程序:data sasuser.cls;set c9501;run;这样的程序流程中也有一个隐含循环,程序在数据步内反复循环,直到输入数据集C9501 最后一个观测读过。
我们还可以用SAS程序语句对生成的数据集进行修改。
比如,我们把超过100分的语文成绩都改为100分,就可以用如下程序:data c9501a;set c9501;100 then chinese=100;run;当然,这种修改也可以在读入原始数据的数据步中使用而不限于使用SET的数据步。
也可以生成新的变量。
在数据步中可以用KEEP语句或DROP语句指定要保留的变量或要丢弃的变量。
比如,data c9501b;set c9501;keep name avg;run;生成的数据集C9501B只包含NAME和AVG两个变量。
用KEEP语句指定要保留的变量。
用DROP 语句指定要丢弃的变量,比如上例中的KEEP语句可以换成:drop sex math chinese;用这种方法可以取出数据集的一部分列组成的子集。
也可以指定一个条件取出数据集的某些行组成的子集。
比如,我们希望取出数学分数90 分以上,语文分数100分以上的学生的观测,可以用如下的“子集IF语句”:data c9501c;set c9501;=100;run;注意子集IF语句不同于我们前面所讲的分支语句,它没有THEN部分,只有条件,用于取出满足条件的行子集。
09. 用SET语句创建,修改数据集(一)用SET语句创建/修改数据集用SET语句,可以从已有数据集创建新数据集、增加新变量、修改数据集。
注意:SET语句是一次一个观测值地,对已有数据集循环执行数据步创建新数据集。
一、基本语法data 新数据集名< (可选项) >;set 已有数据集名< (可选项) >;示例(从数据集sales创建子数据集Friday,增加变量Total):data friday;set sales;if Day = 'F';Total = Popcorn + Peanuts;run;例1 关于火车运汽车的数据(C:\MyRawData\Train.dat),包括发车时间、火车上的汽车数、火车中的人数:数据被读入一个永久数据集trains.sas7bdat中,储存在“D:\我的文档\My SAS Files\9.3”目录下。
代码:data'c:\MySASLib\trains';infile'c:\MyRawData\Train.dat';input Time TIME5. Cars People;run;由于每辆车的最大乘客数为6人,现在想知道一列火车上,平均每辆汽车的乘客数是多少,在一个新数据集中插入一列计算。
代码:set'D:\我的文档\My SAS Files\9.3\trains';PeoplePerCar = People / Cars;run;proc print data = averagetrain;title'Average Number of People per Train Car';format Time TIME5.;run;运行结果:二、用“drop(舍弃)和keep(保留)选项”选择变量(列)在data步中该选项以及SET语句,可以控制从原数集中读出的变量是否被写入要创建的数据集。
sas中set的用法在SAS(Statistical Analysis System)中,`SET` 语句用于将一个数据集的内容复制到另一个数据集中。
这可以用于合并数据、创建新的数据集或者按照某种顺序组合数据。
以下是`SET` 语句的一般用法:```sasDATA 新数据集名;SET 原数据集名;/* 其他数据步操作*/RUN;```这里是一些关键点和示例:1. 基本用法:`SET` 语句简单地将原始数据集的内容复制到新的数据集中。
```sasDATA 新数据集名;SET 原数据集名;RUN;```2. 合并数据集:你可以使用`SET` 语句来合并两个或多个数据集。
```sasDATA 合并数据集名;SET 第一个数据集名第二个数据集名;RUN;```这将按照数据集出现的顺序合并它们。
3. 指定观测范围:你可以使用`FIRSTOBS` 和`OBS` 选项来指定要从原始数据集中复制的观测的范围。
```sasDATA 新数据集名;SET 原数据集名(FIRSTOBS=起始观测编号OBS=结束观测编号);RUN;```4. 重命名变量:你可以在`SET` 语句中使用`RENAME` 选项来为变量指定新的名称。
```sasDATA 新数据集名;SET 原数据集名(RENAME=(原变量名=新变量名));RUN;```这只是`SET` 语句的基本用法。
在实际应用中,你可能需要更复杂的操作,例如使用`BY` 语句进行分组合并,使用`IF` 语句进行条件筛选等。
SAS 的文档提供了详细的信息和示例,可以帮助你更好地理解和使用`SET` 语句。
SAS编程中SET命令的常用用法
By 木杉
2007/5/22 一、读入数据集:
从现有的数据集读入数据(obs) ,下例中set将work.a的所有记录写入work.new ;其作用相当于复制数据集a:
data new ;
set a ;
run;
二、合并数据集:
1、一个set的应用,纵向合并数据集:
a) 2个数据集的字段完全相同的情况下:
数据集a:
数据集b:
data new1 ;
set a b ;
by custid;
run;
运行结果:数据集new1
b) 2个数据集的字段不完全相同的情况下:
数据集a:
数据集b:
data new2 ;
set a b ;
by custid;
run;
运行结果:数据集new2
c) 2个数据集的字段完全不同的情况下:数据集a:
数据集b:
data new3 ;
set a b ;
run;
运行结果:数据集new3
2、两个set的应用:用2个set进行数据集的拼接时,新生产数据集(new)的记录条数为2个数据集的最小值;
a) 当2个数据集的字段都不相同情况下:
新生产的数据集包含2个set数据集的所有变量,第2个set数据集(b)的变量排在第1个数据集(a)的右边,如下例:
数据集a:
数据集b:
data new;
set a;
set b;
run;
运行结果:数据集new
b) 当2个数据集有相同字段(custid)情况下:
第2个数据集(b)custid的值覆盖第1个数据集(a)custid的值,新生产数据集new2一共包含2条记录,如下例:
数据集a:
数据集b:
data new2;
set a;
set b;
run;
运行结果:数据集new2
三、Set命令的常用options :
程序举例使用数据集:
Data work.bbb;
Input custid brand fee;
Cards;
1000123 1 300
1000124 2 200
1000134 3 500
1000139 2 100
1000213 3 200
;
Run;
运行结果:
Data c;
Input custid brand fee ;
Cards;
1000126 1 900
1000125 2 800
1000127 1 200
1000128 2 300
;
Run;
运行结果:
1、Keep的使用:仅把keep选定的变量写入新生成的数据集。
Data work.aaa;
Set work.bbb(keep=custid brand ) ;
Run;
运行结果:
2、Drop 的使用:仅把除drop选定的变量以外的变量写入新生成的数据集。
Data work.aaa;
Set work.bbb(drop=fee ) ;
Run;
运行结果:
3、rename 的使用:在读入数据集时对变量进行重命名。
Data work.aaa;
Set work.bbb( rename=(brand=brand_new ) ) ;
Run;
运行结果:
4、Where的使用:仅把满足条件的记录写入新数据集。
Data work.aaa;
Set work.bbb(where=(brand=3 and fee >=200 ) ) ;
Run;
运行结果:
5、Firstobs和obs的使用:在下例中,set语句将work.bbb的第2条到第5条记录写入work.aaa。
Data work.aaa;
Set work.bbb(firstobs=2 obs=5 ) ;
Run;
运行结果:
6、end的使用:end=var定义一个变量var表示一条记录是否为最后一条记录,变量var的值初始化为0,当遇到到最后一个数据集的最后一条记录时值为1。
下例运行结果:仅将work.bbb的最后一条记录写入数据集work.fff,因此,wrok.fff只包含1条记录。
data work.fff;
set work.bbb end=last ;
if last then output;
run;
运行结果:
7、point的使用:point=var定义一个指针变量var;下例中定义指针变量i ,运行结果:读取c的第1和第3条记录写入work.fff。
data work.fff;
do i=1to4by2;
set c point=i;
output;
end;
stop;
run;
运行结果:
8、nobs的使用:nobs=var定义一个变量,该变量的值是所有输入数据集记录条数的总和;下例中nobs=last定义一个变量last,其值等于work.bbb和c记录条数的总和。
data work.aaa;
do i=1to last by2 ;
set work.bbb c point=i nobs=last;
output;
end;
stop;
run;
运行结果:
9.In的使用:in=var 定义一个变量标识读入的一条记录来自哪个数据集,下列程序可实现两个数据集叠加起来之后生成一个新字段datasets_flag来表示记录的来源(数据集),便于筛选。
Data aaa ;
set bbb(in=a) ccc(in=b);
if a=1then datasets_flag="bbb";
if b=1then datasets_flag="ccc";
run;
运行结果:
9、key的使用:key=index 根据定义的索引对数据集进行merge,下列程序根据索引custid进行merge,并生成一个标志flag来表示匹配是否正确。
Data work.a( index=(custid) ) ;
Input custid brand fee;
Cards;
1000123 1 300
1000124 2 200
1000134 3 500
1000139 2 100
1000213 3 200
;
Run;
数据集a:
Data work.b( index=(custid) ) ;
Input custid time ;
Cards;
1000123 300
1000125 450
1000139 260
1000213 370
;
Run;
数据集b:
data new ;
set work.a ;
set work.b key=custid ;
if _error_ =1then flag='wrong';else flag='right'; run;
运行结果,数据集new:。