sas编程技术数据步文件管理(编辑修改稿)内容摘要:

a=nobs。 set nobs=nobs。 if _n_=a。 run。 如何找数据集的最后一个观测值: data a。 set nobs=nobs。 if _N_=NOBS。 run。 找数据集最后一个观测值更简单的方法: data a。 set end=obs_last。 if obs_last=1。 run。 输出数据集的最后一个观测值: data a。 set End=lastobs。 if lastobs。 x=lastobs。 /*将临时变量 lastobs的值赋给 X*/ put 39。 last observation39。 run。 例 数据集选项说明若干举例。 保留部分变量: data a。 set (keep=date clpr)。 run。 data b (keep=date clpr)。 set。 run。 data c。 set。 keep date clpr。 run。 上述三段程序的结果相同。 注意 , 但第三段程序用的是 KEEP语句 , 并不是数据集选项的应用。 data oppr(keep=date oppr) clpr(keep=date clpr)。 set。 run。 保留部分观测: data males。 set。 where sex=’M’。 run。 data males。 set。 if sex=’M’ then output。 run。 data males。 set。 if sex^=’M’ then delete。 run。 例 相同变量的数据集连接。 data qttn。 set。 run。 例 不同变量的数据集连接。 data a。 set。 run。 MERGE语句 MERGE语句将多个数据集中的观测合并为新数据集中的一个观测。 SAS系统合并观测的方式依赖于 BY语句的使用。 语句格式 MERGE datasetname1 (datasetoptions) datasetname2 ( datasetoptions) …data setnamen(datasetoptions ) END=variablename。 选项说明 D a t a S e t N a me 规定要合并的数据集D a t a S e t O p t i o n s 规 定 对 数 据 集 的 操 作 , 用 到 的 语 句有 k e e p , D r o p 和 r e n a me .E n d = V a r i a b l e _ N a me 规 定 一 个 临 时 变 量 , 作 为 文 件 结 束的标识 应用举例 例 一对一合并 data a。 merge。 run。 例中,一对一合并时,不需要 BY语句。 例 匹配合并 data a。 merge (keep=date clpr rename=(clpr=clpr000001)) (keep=date clpr rename=(clpr=clpr000002))。 by date。 run。 例中,匹配合并必须有 BY语句。 例 使用数据集选( in=) ,选择股票代码为 000001, 202020, 600601和900903的首次发行与上市数据。 Data stkcd。 Input stkcd$6.。 Cards。 000001 202020 600601 900903。 Data Iissulst1。 Merge Resdat. Iissulst stkcd(in=id)。 If id。 /* 选择满足条件股票的首次发行与上市数据 */ Run。 FILE语句 FILE 语句用于规定将要输出的外部文件。 FILE 语句一般要与 PUT语 句配合使用。 同一个 DATA步可以用多个 FILE语句。 FILE语句是可执行语句 , 因而可以用在条件 ( IF—THEN) 过程中。 语句格式 FILE filespecification options hostoptions。 FILESPECIFICATION选项说明: e x t e r n a l f i l e 规定一个外部文件的完整路径和文件名F i l e r e f 文件标识名L o g 规定输出到 L O G 窗口P r i n t 规定输出到 O U T P U T 窗口 OPTIONS选项说明(部分): 选项 说明 DELIMITER= 39。 stringinquotationmarks39。 | charactervariable/ DLM= 指定列表输出时所用的分隔符,在别的输出形式中该选项不起作用。 缺省情况下为空格。 DROPOVER 规定当输出数据行的长度超过规定值时,忽略超过的部分。 FLOWOVER 规定当输出数据行的长度超过规定值时,超出部分在下一行输出。 缺省状态为FLOWOVER。 DSD 规定一个数据可以包含分隔符,要用引号括住。 FILENAME=variable 定义一个字符变量,其值为 PUT语句打开的文件名。 FILEVAR=variable 定义一个变量, FILE语句根据其值的变化关闭和打开输出文件。 例 filename=variable选项应用 data a。 file print filename=xxx。 /* 输出到 OUTPUT窗口, put语句打开的文件名为 print */ put 39。 hello39。 /* OUTPUT窗口将输出 hello */ name=xxx。 /* 数据集 a中有一个变量 name和一个观测值print */ run。 数据集 a name 1 PRINT data a。 file 39。 d:\39。 filename=xxx。 /* 输出到文件 39。 d:\39。 , put语句打开的文件名为 d:\*/ put 39。 hello39。 /* 文件 d:\ : hello*/ fname=xxx。 run。 fname 1 d:\ 数据集 a 例 输出规定格式的外部文本文件。 data。 set。 a=39。 %a(39。 b=39。 ,39。 c=39。 )。 39。 file “D:\”。 put a $ stkcd $ b $ lstknm $ c $。 run。 例中程序产生股票宏文本文档。 INFILE语句 INFILE语句用来定义一个外部数据文件,文件中的数据用 INPUT语句读取。 外部文件可以是已存在的磁盘文件,也可以是从键盘上输入的数据行。 语句格式 INFILE filespecification optionlist hostoptionlist。 FILESPECIFICATION选项说明: EXTERNAL FILE和 FILEREF选项类似 FILE语句的相应选项。 CARDS|CARDS4|DATALINES|DATALINES4选项指明输入数据为 CARDS( CARDS4, DATALINES, DATALINES4) 后面的数据流,而非来自外部数据文件。 大部分选项的作用和 FILE的一致。 下面只介绍几个 INFILE独有的选项。 OPTIONS选项说明 选项 说明 DSD 规定若一个数据由引号括起,则 SAS认为其包含的逗号是字符数据。 设定缺省分隔符为逗号。 两个连续分隔符中间数据为缺失。 读入时去掉数据的引号。 END=variable 定义一个变量标记是否已经到达输入文件的结尾。 FIRSTOBS=recordnumber 规定从该记录行开始读入 MISSOVER 阻止 INPUT语句从下一个数据行读入数据,未赋值的变量设为缺失。 OBS=recordnumber | MAX 规定要读入的记录数 . 例 DELIMITER=选项应用 data a。 infile cards delimiter=39。 ,39。 input x y z。 cards。 3,6,9 1,3,5 8,8,8。 例中,要输入的数据用逗号分隔,创建 SAS数据集时用选项 DELIMITER=’,’。 数据集 a x y z 1 3 6 9 2 1 3 5 3 8 8 8 例 DSD选项应用 data scores。 infile datalines delimiter=39。 ,39。 input test1 test2 test3。 datalines。 91,87,95 97,92 , 1 , 1。 例中,分隔符为逗号,但第二个观测值的两个相邻分隔符之间还有缺失值,没有 DSD选项时,这两个相邻的分隔符组成一个分隔符,于是,输入数据时会出错。 test1 test2 test3 1 91 87 95 2 97 92 1 上例加上 DSD选项,将两个相邻分隔符之间的数作为缺失值处理 data sc。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。