SAS编程数据挖掘学习与帮助文档-5_第1页
SAS编程数据挖掘学习与帮助文档-5_第2页
SAS编程数据挖掘学习与帮助文档-5_第3页
SAS编程数据挖掘学习与帮助文档-5_第4页
SAS编程数据挖掘学习与帮助文档-5_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SAS编程与数据挖掘商业案例学习笔记之十七(2013-08-09 21:29:50) 转载标签: sas数据挖掘sqlsas编程join语句分类: SAS编程 继续读书笔记,本次重点sas sql语句,由于sql内容多且复杂,本文只介绍商业应用中常用的并且容易出错的地方,内容包括:单表操作、多表关联、子查询以及merge和join的区别1.单表操作eg1:Proc sql outobs=10; *可选项,功能类似于data步中的obs数据集选项create table class asSelect name,case when sex eq 'M' then "1&q

2、uot; when sex eq 'F' then "2" else "3"end as sex_tran label="sextrans", *输出数据集中作为sex_trans的中文标签sum(weight-20) as new1 format=16.2, *sas查询特有的形式sum(height-10) as new2 format=16.2,(calculated new1 - calculated new2) as new, *calculated是sas在sql中特有的语句,用于对产生的新变量再操作Fro

3、m sashelp.class(where=(height between 50 and 70)Group by name,calculated sex_tran;eg2:proc sql;create table test1 asselectid,max (txn_seq) as txn_seq,sum (amount) as sum_amtfrom chap11.having1group by idhaving calculated sum_amt ge 70;quit;注:having语句出现在group by后面,如果没哟group by语句,系统默认having语句和where语句效

4、果相同proc sql;create table test2 asselectid,txn_seq,amountfrom chap11.having1group by idhaving txn_seq= max (txn_seq);quit;注:having语句和group by语句同时出现时,select后面不一定需要汇总函数如sum等,上例中,按照每一个id取最大的txn_seqproc sql;create table test3 asselectid,txn_seq,amountfrom chap11.having2group by idhaving txn_seq = max (tx

5、n_seq);quit;having语句和max或min结合使用时,一定要注意having后面的变量在每一个id中的唯一性。2.多表关联左联接在join变量是一对一的情况下,如果where在表的外面,则where条件是先关联表,后筛选数据,如果where在表中,则是先筛选数据后关联表,and也是先筛选数据后关联表;因而表内写where和表外写and是完全一样的。以下程序,2和3完全一样,但是1和后面两个不一样eg:proc sql;create table leftjoin1 asselectcasewhen b.rmb_id eq . then a.idelse b.rmb_idend as

6、 all_rmb,a.id,b.rmb_id,b.usd_idfrom chap11.left_join_1 as aleft join chap11.left_join_2 as bon a.id=b.usd_idwhere rmb_id le 4;quit;proc sql;create table leftjoin2 asselectcasewhen b.rmb_id eq . then a.idelse b.rmb_idend as all_rmb,a.id,b.rmb_id,b.usd_idfromchap11.left_join_1 as aleft join chap11.lef

7、t_join_2(where=(rmb_id le 4) as bon a.id=b.usd_id;quit;proc sql;create table leftjoin3 asselectcasewhen b.rmb_id eq . then a.idelse b.rmb_idend as all_rmb,a.id,b.rmb_id,b.usd_idfrom chap11.left_join_1 as aleft join chap11.left_join_2 as bon a.id=b.usd_idand rmb_id le 4;quit;3.子查询in子查询效率比join低很多,而exi

8、st子查询效率更低;4.merge和sql的比较在“一对一”和“多对一”的情况下,效果完全相同,但是在“多对多”情况下,则完全不同。创建测试数据集data a1;input x y ;cards;101 1 102 3103 30 104 5;run;data a2;input x y ;cards;101 10 102 30103 5 105 50;run;data a3;input x y z1 ;cards;101 11 1 102 33 2102 300 3 104 5 4;run;data a4;input x y z2 ;cards;101 1 5 102 30 6102 5 7

9、102 100 8102 200 9 105 50 10;run;eg1:求a1和a2的交集sql实现:merge实现proc sql;selecta1.x,a2.yfrom a1 join a2on a1.x=a2.x;quit;proc sort data=a1;by x;run;proc sort data=a2;by x;run;data a12;merge a1(in=ina) a2(in=inb);by x;if ina and inb;proc print;run;注:sql是通过内连接实现,merge通过if ina and inb实现eg2:用数据集a2来更新数据集a1sql

10、实现:merge实现proc sql;selecta1.x,case when a2.y is not null then a2.yelse a1.y end as yyfrom a1left join a2on a1.x=a2.x;quit;proc sort data=a1;by x;run;proc sort data=a2;by x;run;data a12;merge a1(in=ina) a2(in=inb);by x;if ina;proc print;run;注:sql通过左联接方式实现,merge通过if ina方式实现,等价于左联接eg3:用数据集a2来更新数据集a1,同时

11、保留两个数据集所有观测sql实现:merge实现proc sql;selectcoalesce(a1.x,a2.x) as x,coalesce(a2.y,a1.y) as yyfrom a1full join a2on a1.x=a2.x;quit;proc sort data=a1;by x;run;proc sort data=a2;by x;run;data a12;merge a1 a2;by x;run;proc print;run;注:sql通过全连接方式实现,需求中需要用a2所有变量更新a1,所以一定要把a2变量放在前面,被更新的数据集放在后面,但是对join的匹配变量,对这种

12、顺序无要求;merge没有使用in=选项,等价于全连接;eg4:多对多sql实现merge实现proc sql;selecta3.x,a4.y,a3.z1,a4.z2from a3join a4on a3.x=a4.x;quit;proc sort data=a3;by x;run;proc sort data=a4;by x;run;data a34;merge a3(in=ina) a4(in=inb);by x;if ina and inb;run;proc print;run;注:sql形式会出现重复值,匹配到的数据会进行笛卡尔;而merge则因为if ina and inb的作用,避

13、免了重复5.创建表复制已有的表属性proc sql;create table alike sashelp.class;describe table a;quit;6.行操作添加行操作使用set语句使用value语句使用select语句proc sql;insert into countriesset name='bangladesh',capital='dhaka',population=126391060set name='japan',capital='tokyo',population=126352003;quit;proc

14、 sql;insert into countriesvalues ('pakistan', 'islamabad', 123060000)values ('nigeria', 'lagos', 99062000);quit;proc sql;create table newconntrieslike countries;insert into newconntriesselect * from countrieswhere population ge 120000000;quit;最后注意:多表关联时,最好不要超过5个表,除非都是

15、代码表,否则sql会产生很大的临时空间,从而降低程序性能除非必须,否则优先使用关联,而不要用子查询在使用set操作符时,如果set表没有重复行,则使用union all会提高性能如果有索引,尽可能用索引和where语句结合尽量避免多对多joinSAS编程与数据挖掘商业案例学习笔记之十八(2013-08-15 16:31:21) 转载标签: 数据挖掘数据分析saslogistic建模分类: 数据挖掘 接着以前的SAS编程与数据挖掘商业案例,之前全是sas的基础知识,现在开始进入数据挖掘方面笔记,本文主要介绍数据挖掘基本流程以及应用方向,并以logistic回归为例说明。一:数据挖掘综述衡量一个数

16、据挖掘模型价值的唯一标准就是商业目标,为达到一个商业目标,有很多种方法,只有高效解决商业目标的方法才是最牛的方法,即使是看似简单的方法,只要能高效解决商业目标,我们就认为是牛的方法;面对海量的数据,即使是使用了最先进的工具,最复杂的算法,但是如果挖掘出来的知识是无用的,或者挖掘的结果是无法解释的,那这种挖掘也是失败的。很多人对数据挖掘都有一个误解,认为一定要使用复杂的工具和复杂的算法,其实是一种误导。数据挖掘流程:商业理解、数据收集、数据清洗、数据特征化、数据建模、模型打分、模型验证、模型实施、模型优化描述分析:对已经发生的现象进行分析,主要分析技术有描述性分析、数据特征化、聚类分析、孤立点分

17、析因果分析:寻找发生的原因,主要技术有联机分析、相关性分析、回归分析、关联分析、因子分析分类和预测:主要分类技术:决策树、判别分析、贝叶斯分类、logistic回归分析、神经网络、支持向量机等预测技术有:多元线性回归分析、广义线性回归分析、非线性回归分析、神经网络分析二:商业目标:1、评价活动的效果:比较分析通过开展工作组和控制组进行比对。2.特征分析比如要分析高价值客户的特征,通过特征化数据(均值、方差、极值)、相关性度量(相关系数、卡方值、基尼系数、熵)、聚类分析、因子分析等发现表面的和潜在的数据特征。3.市场细分市场细分由业务主导,而不是技术主导。细分结果一定要以易于开展营销活动为目的。

18、4.响应提高某个营销活动的响应度5.风险风险控制指标通常包括:资产负债情况、信用记录、工作稳定性、收入、教育程度、家庭人口结构风险模型的建立在技术上类似于响应模型,但对于业务上有很大的区别,比如定义目标变量上,风险模型可能有很多因素决定,一个比较常见的定义:拖欠额度超过某一数值,并逾期超过3个月的客户作为风险客户(目标变量值为1,其余情况为0)6.流失重点在于流失目标变量的定义;7.提升销售和交叉销售数据挖掘商业应用的最高原则是:“效率、效果”3.需求文档需求文档包括三部分项目计划文档(ppt)商业目标、技术目标、计划内容、项目路线图、给出分析团队如何实施项目的明确时间表和每一阶段的任务资源:

19、是每一个项目阶段所需要的参与项目人员方法论设计文档(word)是解决商业需求的技术文档,是一个解决方案,最核心的内容是组合不同的算法,并给出最终能达到的理论目标变量需求文档(excel)4.建模流程图5.logistic建模及结果详解商业应用领域,logistic回归是应用最广泛的预测模型,神经网络存在过度拟合的嫌疑,而决策树可能存在预测结果的不稳定性,并且在大数据的情况下决策树存在失灵现象,因此logistic回归相对于另外两个是一个适度的模型,再加上输出结果有很好的解释性,应用很广泛logistic变换:logit(p)=ln(p/1-p) 然后再与自变量进行线性拟合logistic回归中

20、,因变量y服从二项分布或多项分布,而线性回归分析中y是服从正态分布logistic回归中不存在线性回归中的残差项,logistic回归采用MLE(最大似然估计),而线性回归分析采用的是LSE(最小二乘估计)LSE的原理是假设残差独立同分布,然后构造样本函数,使得因变量的观测值和模型估计值之间的离差平方和最小。MLE的原理,是构造似然函数,对于二值型的logistic回归来说,服从二点分布,评价模型好坏的指标:1)拟合优度拟合优度是衡量预测值和观测值之间的总体一致性,但是在评价模型时,实际上测量的是预测值和观测值之间的差别,实际上是模型预测的“劣度”,即拟合不佳检验,常用的指标是HL(hosme

21、r-lemeshow)和IM(information measures)HL是一种类似于皮尔逊-卡方统计量的指标,对应的统计假设H0是预测值概率和观测值之间无显著差异,因而如果HL有较大的P值,则接受原假设,说明统计结果不显著,因而,不能拒绝关于模型拟合数据很好的假设,即模型很好的拟合了数据。可以通过调用lackfit选项命令实现IM指标中比较显著的是AIC和SC,AIC越小标示拟合模型越好,sc是对aic指标的一种修正,与AIC同向作用2)卡方统计卡方统计监测的是模型中所包含的自变量对因变量有显著的解释能力,在多元线性回归和ANOVA中,常用F检验达到目的,在logistic中用似然比检验,

22、相当于F检验,在sas输出结果中就是likelihood ratio对应的值,注:卡方值和拟合优度是两个完全不同的概念,前者度量的是自变量和因变量的ODDS自然对数线性相关,而后者度量的是预测值和观测值之间的一致性,所以,最好是模型卡方统计性显著而拟合优度统计性不显著。3)预测准确性预测准确性问题是:检验所有x变量到底能解释多少Y变量的波动RSQUARE:Y变异中被解释的比例,C统计量:度量的是观测值和条件预测概率之间的相对一致性;指标越高,表示预测概率与观测反应变量之间的关联越密切。总结如下:统计量趋势作用sas命令备注C统计量越大越好度量的是观测值和条件预测概率之间的相对一致性自动输出似然

23、比卡方越大越好类似于F检验,度量回归平方和,自变量对因变量的显著解释能力自动输出P值越小越好AIC越小越好类似于多远回归残差平方和自动输出RSQUARE越大越好Y变异中被解释的比例RSQHL统计量越小越好度量观测值与预测值总体的一致性LACKFITP值越大越好商业实战中,一般考虑前两种,因为logistic回归是一个分类模型,目标变量的值只是一个分类标示,因而更关注观测值和预测值之间的相对一致性,而不是绝对一致性,因而分析师更关注于模型预测概率值的排序,而lift图也正是从概率排序结果得到的。应用举例和输出结果的解释Proc logistic data=lg.remission desc; *

24、按目标变量降序输入建模数据集model remiss =cell smear infil li blast temp / selection=stepwiseslentry=0.3 slstay=0.35 details lackfit stb; *设置进入阈值和保留阈值,并输出详细结果,输出HL统计量,输出标准化数 据后的模型参数output out=pred p=phat; *设置预测概率变量为phatRun;在输出结果association of predicted probabilities and observed responses中最后一列的C统计量,一般大于0.7以上就可以用该

25、模型SAS编程与数据挖掘商业案例学习笔记之十九(2013-08-23 23:12:17) 转载标签: 数据挖掘数据处理正则表达式sas编程sas分类: SAS编程 继续SAS编程与数据挖掘商业案例学习笔记,本文侧重数据处理实践,包括:HASH对象、自定义format、以及功能强大的正则表达式一:HASH对象Hash对象又称散列表,是根据关键码值而直接进行访问的数据结构,是根据关键码值而直接进行访问的数据结构,sas提供了两个类来处理哈希表,用于存储数据的hash和用于遍历的hiter,hash类提供了查找、添加、修改、删除等方法,hiter提供了用于定位和遍历的first、next等方法。优点

26、:键值的查找是在内存中进行的,有利于提高性能;hash表可以在数据步运行时,动态的添加更新或删除观测;hash表中可以很快的定位数据,减少查找次数;常用方法:definekey:定义键Definedata:定义值definedone:定义完成,可以载入数据add:添加键值,如在hash表中已存在,则忽略;replace:如果健在hash表中存在,则替换,如果不存在则添加键值remove:清除键值对find:查找健值,如果存在则将值写入对应变量check:查找键值,如果存在则返回rc=0,不修改当前变量的值;output:将hash表输出到数据集clear:清空hash表,但并不删除对象equa

27、l:判断两个hash类是否相等find方法的示例:libname chapt12 'f:data_modelbook_datachapt12'data results;if _n_=0 then set chapt12.participants; if _n_ = 1 then do;declare hash h(dataset:'chapt12.participants'); h.definekey('name');h.definedata('gender', 'treatment');h.definedone(

28、);end;set chapt12.weight;if h.find() = 0 thenoutput;run;hiter对象的引例:data patients;length patient_id $ 16 discharge 8;input patient_id discharge:date9.;datalines;smith-4123 15mar2004hagen-2834 23apr2004smith-2437 15jan2004flinn-2940 12feb2004;data _null_;if _n_=0 then set patients;declare hash ht(data

29、set:"patients",ordered:"ascending");ht.definekey("patient_id");ht.definedata("patient_id", "discharge");ht.definedone();declare hiter iter("ht");rc = iter.first();do while (rc=0);put patient_id discharge:date9.;rc = iter.next();end;run;用dec

30、lare hiter iter("ht");给hash表ht定义了一个遍历器iter,之后调用first方法将遍历器定位到hash表的第一条观测,然后使用next方法遍历hash表中的所有记录并输出。商业实战-两个数据集的合并:data both1(drop=rc); declare hash plan (); rc = plan.definekey ('plan_id'); rc = plan.definedata ('plan_desc'); rc = plan.definedone (); do until (eof1) ; set c

31、hapt12.plans end = eof1;rc = plan.add (); end;do until (eof2) ; set chapt12.members end = eof2;call missing(plan_desc);rc = plan.find (); output; end;stop;run;上述程序可以简化为:data both2;length plan_id $3 plan_desc $20;if _n_ = 1 then do;declare hash h(dataset:'chapt12.plans');h.definekey('plan

32、_id');h.definedata('plan_desc');h.definedone();call missing(plan_desc);end;set chapt12.members;rc=h.find();run;二:format自定义format:Proc Format;Value $ Sex_Fmt'F'='女''M'='男'Other = '未知'Value Age_DurLow-10="10岁以下" 11-13="11-13岁"14-&

33、lt;15="14-15"15-High="15岁以上"Run;应用:Data test;Set sashelp.class(keep=sex age);x=put(sex,$sex_fmt);y=put(age,age_dur.);Run;三:正则表达式:/./ 一个正则表达式的起止;| 数项之间的选择,“或”运算;() 匹配组,标记一个子表达式的开始和结束位置;. 除换行符以外的任意字符;w 任一单词字符,数字大小写字母以及下划线W 任一非单词字符s 任一空白字符,包括空格、制表符、换行符、回车符、中文全角空格等;S 任一非空白字符,d 0-9任一数

34、字D 任一非数字字符.a-z 从a到za-z 不在从a到z范围内的任意字符 匹配输入字符串的开始位置$ 匹配输入字符串的结尾位置b 描述单词的前或后边界B 表示非单词边界* 匹配0次或多次+ 匹配一次或多次? 匹配零次或 一次n 匹配n次n, 匹配n次以上n,m 匹配n到m次常用函数:Prxparse 定义一个正则表达式Prxmatch 返回匹配模式的首次匹配位置Call prxsubstr 返回匹配模式在目标字符串的开始位置和长度Prxposn 返回正则表达式子表达式对应的匹配模式值Call prxposn 返回正则表达式子表达式对应的匹配模式和长度Cal l prxnext 返回匹配模式在

35、目标字符串中的多个匹配位置和长度Prxchange 替代匹配模式的值Call prxchange 替代匹配模式的值eg1:data _null_;if _n_ = 1 then pattern_num = rxparse("/cat/");retain pattern_num;input string $30.;position = rxmatch(pattern_num,string);file print;put pattern_num= string= position=;datalines;there is a cat in this line.does not m

36、atch catcat in the beginningat the end, a catcat;run;eg2:数据验证data match_phone;set chapt12.phone_numbers;if _n_ = 1 then pattern = prxparse("/(ddd) ?ddd-d4/");retain pattern;if prxmatch(pattern,phone) gt 0 then output;run;找出不匹配的手机号码data unmatch_phone;set chapt12.phone_numbers;where not prxm

37、atch("/(ddd) ?ddd-d4/",phone);run;Eg3:提取匹配某种模式的字符串data extract;if _n_ = 1 then do;pattern = prxparse("/(ddd) ?ddd-d4/");if missing(pattern) then do;put "error in compiling regular expression"stop;end;end;retain pattern;length number $ 15;input string $char80.;call prxsu

38、bstr(pattern,string,start,length);if start gt 0 then do;number = substr (string,start,length); number = compress(number," ");output;end;keep number;datalines;this line does not have any phone numbers on itthis line does: (123)345-4567 la di la di laalso valid (123) 999-9999two numbers here

39、 (333)444-5555 and (800)123-4567;run;eg4:提取名字data ReversedNames;input name & $32.;datalines;Jones, FredKavich, KateTurley, RonDulix, Yolanda;data FirstLastNames;length first last $ 16;keep first last;retain re;if _N_ = 1 thenre = prxparse('/(w+), (w+)/');set ReversedNames;if prxmatch(re,

40、 name) thendo;last = prxposn(re, 1, name);first = prxposn(re, 2, name);end;run;注:1,2分别代表正则表达式中的两个组eg5:提取符合规定的名字data old;input name $60.;datalines;Judith S ReaveleyRalph F. MorganJess EnnisCarol EcholsKelly Hansen HuffJudithNickJones;data new;length first middle last $ 40;re1 = prxparse('/(S+)s+(

41、s+s+)?(S+)/o');re2 = prxparse('/(S+)(s+)(s+s+)(?)(S+)/o');set old;id1=prxmatch(re1, name);id2=prxmatch(re2, name);if id1 thendo;first = prxposn(re1, 1, name);middle = prxposn(re1, 2, name);last = prxposn(re1, 3, name);end;if id2 then test=prxposn(re1, 4, name);put test=;run;Eg6:返回匹配模式的多个

42、位置data _null_;expressionid = prxparse('/crbat/');text = 'the woods have a bat, cat, and a rat!'start = 1;stop = length(text);call prxnext(expressionid, start, stop, text, position, length);do while (position > 0);found = substr(text, position, length);put found= position= length=;

43、call prxnext(expressionid, start, stop, text, position, length);end;run;注:首次执行call prxnext返回一个position,然后进入循环,在抽取满足条件的子串中,再次执行all prxnext,此时会返回下一个匹配的position;Eg7:替换文本data cat_and_mouse;input text $char40.;length new_text $ 80;if _n_ = 1 then match = prxparse("s/Ccat/mouse/");retain match;c

44、all prxchange(match,-1,text,new_text,len,trunc,num); if trunc then put "note: new_text was truncated"datalines;the Cat in the hatthere are two cat cats in this linehere is no replacement;run;一些常用的SAS命令1. 转换文本数据文件的数据步的一般形式为:data 数据集名;infile 文件名;input 变量输入设定;run;2. 指定逻辑文件名语句的一般形式为:filename 逻

45、辑文件名 文件位置;3. 查看SAS逻辑库的属性和内容的一般写法为:proc datasets lib=逻辑库名;run;4. 查看SAS数据集的属性的一般写法为:proc contents data=数据集名;run;5. 输出数据集的数据部分的一般写法为:proc print data=数据集名;run;6.为了实现存储和管理面向对象的开发任务,SAS建立目录册(catalog)类型的文件,在这一类文件中可以存储整个应用系统,包括它的界面,源程序和各种对象间的连接;7. SAS逻辑库是一个逻辑概念,一个逻辑库就是存放在同一文件夹或几个文件夹中的一组SAS文件;8.在SAS软件系统的信息组织

46、中,总共只有两个层次:SAS逻辑库是高一级的层次,低一级的层次就是SAS文件本身;9.在SAS系统中,为便于访问一个SAS文件,要为该SAS文件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名,在指定逻辑库名后,就可使用两级命名的方式引用SAS文件:逻辑库名.文件名;10.在每个SAS进程一开始,系统就自动地指定了一些逻辑库供用户使用,它们是WORK、SASHELP和SASUSER;11.在每个SAS进程开始时系统缺省地创建名为work的SAS逻辑库,它是一个临时逻辑库,在引用WORK库中的SAS文件时,可省略逻辑库名;12.永久逻辑库是指它的内容在当前SAS进程结束时仍被保留的SAS逻辑库

47、,在SAS系统中除了库名为WORK以外的逻辑库都是永久库;13. Sashelp包含所安装SAS系统各个产品有关的SAS文件,运行安装的SAS系统所需要的SAS文件缺省地存储在这个逻辑库中;14. Sasuser包含为满足用户需要而特制的SAS文件,用户的一些设置也放在Sasuser逻辑库中;Sasuser也是存放为您个人使用而创建的文件的合适场合;15.库引擎是规定系统用什么格式向逻辑库读写文件的内部指令;16.由于Sashelp、Sasuser和Work是系统自动设定的,这些逻辑库名是不能删除的;17.一个SAS数据集是一个包含两个组成部分的文件:一个描述部分和一个数据部分。某些SAS数据

48、集也另外包含一个索引文件;18. SAS数据集的变量属性信息包括变量的:名称(name)、类型(type)、长度(length)、输出格式(format)、输入格式(informat)和变量标签(label);19.SAS编程前必须明确以下三个方面:什么是输入的或供操作的数据、要对输入的数据进行什么加工、期望的输出结果是什么;20.每个SAS程序是由许多完成单个动作的程序步和一些设定环境的语句构成的;21.数据步(data step):读入源数据文件和SAS数据集,修改、编辑或创建SAS数据集或文本文件;22.过程步(proc step):面向SAS数据集,完成某个特定的计算、分析和呈现的功能

49、;23.每个语句是由一个关键词开始,并以分号结束,通常就用开始的关键词命名这个语句;24. DATA语句和PROC语句分别标志数据步和过程步的开始,RUN语句或另一个程序步的开始标志程序步的结束;25.指定逻辑库名的语句的一般形式为:libname 逻辑库名 库的实际地址;26在程序编辑器窗口提交语句: libname 逻辑库名 list;可以在log窗口显示该逻辑库的连接;27.多个物理位置指定同一个逻辑库名的一般形式为:libname 逻辑库名(物理位置1 物理位置2);28. SAS的子窗口主要有浏览器窗口(EXPLORER)、结果窗口(RESULTS)、程序编辑器窗口(program

50、editor)、日志窗口(log)、输出窗口(output);29.切换至日志窗口的命令是log、热键是F6;切换至输出窗口的命令是output、热键是F7;30.提交SAS程序的命令是submit;31. SAS系统是大型集成软件系统,具备完备的数据访问、管理、分析和呈现及应用开发功能;32. SAS数据集是一类由SAS系统建立、维护和管理的数据文件;33. input语句的一般形式为:input 指针控制 变量名 输入格式;34. 指针控制n表示从第n列开始读入,+n表示将列控制指针增加n列后读入;35. 程序数据列PDV包含两个自动生成的(临时)变量:_N_、_ERROR_,它们可以在程

51、序中使用,但不作为观测的一部分写入数据集;36. retain语句的一般形式为:retain 变量名<初值> 变量名<初值> ;37. 在数据步执行的每次循环中,retain语句指定的变量不再从新初始化,保留它以前存储的结果;38. 求和语句的一般形式是:变量名+表达式;在求和语句中加号前后的项有不同的作用,一个是累加的变量,另一个是相加的表达式,两者位置是不能互换的;39. 函数LAG和DIF调用的一般形式为:LAG(变量名);DIF(变量名);函数LAG的返回值是上一条记录中该变量的值,函数DIF的返回值是当前记录中变量值减去上一条记录中该变量的值;40. 实现将加工结果存为文本格式的数据步程序的一般形式为:Data_Null_;数据读入语句组;数据加工语句组;file 文件名<选项>;put 变量写入设定;run;41. 过程import的作用是实现将PC格式数据文件、以固定字符为字段分隔符的文本文件转换为SAS数据集;42. DROP和KEEP语句的作用是实现对生成数据集的变量进行删减;43. 在数据步的加工过程中,可使用IF语句选择要保留的观测,其一般形式为:IF 表达式;44. 临时变量FIRST.*它在BY 变量每个值的第一条记录时为1,否则为0;临时变量LAST.*它在BY变量每个值的最后一条记录时为1,否则为0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论