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处理流程与指针控制 清华大学经。sas编程技术数据步变量与变量属性控制(编辑修改稿)
相关推荐
PHYS1 PHYS2 PHYS3 WEIGHT WAIST PULSE Correlations Between the Exercises and Their Canonical Variables EXER1 EXER2 EXER3 CHINS SITUPS JUMPS Correlations Between the Physiological Measurements and the
l preplot rotate=promax reorder plot outstat=fact_all。 run。 proc factor data=socecon method=ml heywood nfacotors=1。 run。 proc factor data=socecon method=ml heywood nfactors=2。 run。 proc factor
非线性回归模型为 : y=b0*(1exp(b1*x) proc nlin method=gauss NonLinear Least Squares Grid Search Dependent Variable Y B0 B1 Sum of Squares NonLinear Least Squares Iterative Phase Dependent Variable Y Method:
print data=testd4。 Run。 在 OUTPUT 窗口中显示的运行结果 如 图 所示。 图 用列指针控制读入外部文件后的 SAS 数据集 c7505695adb36f18f7e25cf5d2462a90 SAS 系统和数据分析 电子商务系列 上海财经大学经济信息管理系 IS/SHUFE Created by Page 7 of 18 变量表 (输入格式表 )是一种分组格式表
商务数据分析 电子商务系列 上海财经大学经济信息管理系 IS/SHUFE Page 10 of 30 3. 结果分析 表 (a)包括基本统计数,即每一变量的平均数、标准差。 表 中输出结果( b)为简单相关系数矩阵。 表 ( c)为输出相关矩阵的特征值。 表 输出结果( d)为特征向量。 我们从相关矩阵出发进行主成分分析。 从表 中输出结果 (c)可以看出,在最后一列累计贡献率中
Data class4。 Set class2。 0e3194151c8f36e3d5fa7075bfdf439d SAS 系统和数据分析 电子商务系列 上海财经大学经济信息管理系 IS/SHUFE Created by Page 5 of 12 if total lt 450 then delete。 Proc print data=class4。 Run。 程序三: Data class4。