sas编程技术数据步变量与变量属性控制(编辑修改稿)内容摘要:

之后不起作用, lstknm的长度为 6,所以显示的值分别为’深发展’和’大秦铁’。 Obs lstknm 1 深发展 2 大秦铁 上段程序的正确写法: data a。 lstknm=’深发展’。 data b。 lstknm=’大秦铁路’。 data c。 length lstknm $12。 /*length语句放在 set语句之前 */ set a b。 proc print。 /*显示正确结果 */ run。 Obs lstknm 1 深发展 2 大秦铁 路 LABEL语句 LABEL语句用于为变量加标签。 变量标签是对变量的进一步说明 , 看到标签就能理解变量的意思。 这个标签在 SAS数据集中同变量名一起被存贮 , 而且可通过许多 SAS过程被打印输出。 语句格式: LABEL variable1=39。 label139。 … variable1=39。 labeln39。 其中:  Variable规定加标签的变量名;  Label规定最多 40个字符的标签。 一个标签语句可以出现若干个变量名和标签。 例 Label语句的两种写法。 第一种写法: Label scode=交易所用代码 |stock code by exchange hstocd=最新股票代码 |stock code shrsdt=观测日 |shares outstanding observation date shrout=观测到的 b股股本 |b shares outstanding。 第二种写法: label scode=交易所用代码 |stock code by exchange label hstocd=最新股票代码 |stock code label shrsdt=观测日 |shares outstanding observation date label shrout=观测到的 b股股本 |b shares outstanding。 例 删除变量的标签。 Label scode=39。 39。 hstocd=39。 39。 shrsdt=39。 39。 shrout=39。 39。 ATTRIB语句 ATTARIB语句用于规定多个变量的输出格式,输入格式,标签和长度。 语句格式 ATTRIB variablelist1 attributelist1 … variablelistn attributelistn。 其中: variablelist规定要定义属性的变量列表; attributelist规定变量属性列表。 可以规定的变量属性 ATTRIB语句可以规定的变量属性有:  FORMAT= format规定输出格式;  INFORMAT=informat规定输入格式;  LABEL=39。 label39。 规定标签;  LENGTH=$length规定长度。 字符变量前面加 $。 ATTRIB 语 句 永 久 地 为 变 量 规 定 了 属 性。 可 以 用FORMAT, INFORMAT, LABEL, 和 LENGTH语句来指定变量的属性。 用 ATTRIB语句指定的任何属性都可以用多个属性的语句改变它,反之亦然。 应用举例 例 对单个变量定义一种属性。 attrib scode length=$6。 例 对单个变量定义多种属性。 attrib date informat=mmddyy. Format=worddate.。 例 对多个变量定义相同的多种属性。 attrib S1 S2 S3 length=$4 label=39。 SCORE39。 例 对多个变量定义不同的多种属性。 attrib S length=$ 4 label=39。 SCORE39。 date informat=mmddyy. Format=worddate. label=39。 TEST DATE39。 例 对变量列表定义一种属性。 attrib month1month12 label=39。 MONTHLY SALES39。 变量后面几种属性选项的次序是任意的。 DROP语句 DROP语句规定输出数据集中要删除的变量 , 它对DATA步正在创建的所有 SAS数据集都适用。 语句格式: DROP variablelist。 其中: variblelist规定输出数据集中要删除的变量。 例 Drop语句与数据集中的 drop=选项。 data a。 set。 drop sex age。 /* drop语句 */ proc print。 run。 data a (drop=sex age)。 /* 数据集中的 drop=选项 */ set。 proc print。 run。 例中 , 两段程序的效果相同。 DROP语句告诉 SAS系统新建数据集 A中将删除 SEX 和 AGE两个变量。 KEEP语句 KEEP语句规定输出数据中要保留的变量 , 它对 DATA步正在创建的所有 SAS数据集都适用。 语句格式: KEEP variablelist。 其中: variablelist规定输出数据集中要保留的变量。 例 Keep语句与数据集中的 keep=选项。 data a。 set。 keep date clpr。 /* keep语句 */ proc print data=a (obs=10)。 run。 data a (keep=date clpr)。 /* 数据集中的 keep=选项 */ set。 proc print data=a (obs=10)。 run。 DROP和 KEEP语句使用规则  同一个 DATA步不用同时使用 DROP和 KEEP语句;  RENAME语句和 KEEP或 DROP语句一起使用时 ,KEEP语句和 DROP语句会首先起作用。 即 , 在 KEEP语句或 DROP语句中使用是旧名字。 例 RENAME语句和 KEEP语句一起使用时, KEEP语句使用旧变量名时程序运行正常, keep语句使用新变量名时程序运行出错。 data a。 set。 keep date clpr。 /* 使用旧变量名,程序运行正常 */ rename clpr=clpr_SH。 run。 data a。 set。 keep date clpr_SH。 /* 使用新变量名,程序不能正常运行 */ rename clpr=clpr_SH。 run。 WARNING: 从未引用过 DROP、 KEEP 或 RENAME 列表中的变量 clpr_SH。 WARNING: 从未引用过 DROP、 KEEP 或 RENAME 列表中的变量 clpr。 NOTE: 从数据集 读取了 3891 个观测。 NOTE: 数据集 有 3891 个观测和 1 个变量。 数据集选项 DROP=和 KEEP=使用规则 数据集选项 drop=和 keep=的使用规则基本同 drop和keep语句的使用规则。 但更灵活,实现同样的功能,对于不同的数据集,新旧名的使用规则也不同。 RENAME语句 RENAME语句可以更改多个变量的名字。 语句格式: RENAME oldname1=newname1… oldnamen=newnamen; 其中:  oldname规定输入数据集中出现的变量名字;  newname规定变量的新名字。 由于变量的新名字在输出的数据集中才起作用 , 所以 , 在当前 DATA步的程序语句须使用老名字。 例 应用举例。 data a (keep=date open low high close)。 set。 rename oppr=open lopr=low hipr=high clpr=close。 proc print data=a (obs=3)。 run。 RETAIN语句 RETAIN语句来规定单个变量 , 变量列表 , 或数组元素的初始值。 语句格式: RETAINelementlist1initialvalue1|(initial=value1)|(initialvaluelist1) … elementlistninitialvaluen|(initialvaluen)|(initialvaluelistn)。 选项说明: 没有选项 规 定 用 I N P U T 语 句 或 赋 值 语 句 创 建 的 所 有 变 量 值从 D A T A 步的这次执行到下一次重复时被保留E l e me nt L i s t 规定变量名字,变量列表或数组名I ni t i a l V a l ue 列出 R E T A I N 语句所规定变量的初始值I ni t i a l V a l ue L i s t 规定 初始值列表例 没有选项时 , 规定用 INPUT语句或赋值语句创建的所有变量值从 DATA步的这次执行到下一次重复时被保留。 于是数据值在一些观测中可能保留了本应为缺失值的其它值。 data a。 input id @@。 retain。 if id=1 then test=39。 pass39。 if id=2 then test=39。 fail39。 cards。 1 2 2 2 3 5 1 5 3 1。 proc print noobs。 run。 打印输出结果为: 例中 , 当 ID的值为 1或 2时 , 都是对的。 但当 ID等于 1和 2以外的值时 , 没有一个 IF条件是真的 , 故 TEST没有接收新的值。 由于有 RETAIN语句 ,所以 , TEST就保持从上一观测中得到的值 , 这样就产生错误。 若从这段程序删除 RETAIN语句 , 当 ID值不等于 1或 2时 TEST的值为空格 (缺失值 ). ID Test1 Pass2 Fail2 Fail2 Fail3 Fail5 Fail1 Pass5 Pass3 Pass1 Passdata a。 打印输出结果为: input id @@。 if id=1 then test=39。 pass39。 if id=2 then test=39。 fail39。 cards。 1 2 2 2 3 5 1 5 3 1。 proc print noobs。 run。 用 _ALL_, _CHAR_或 _NUMERIC_规定变量列表时 , 只有在RETAIN语句之前定义的变量才有效。 ID Test1 Pass2 Fail2 Fail2 Fail351 Pass531 Pass第 24章 SAS处理流程与指针控制 清华大学经。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。