SAS编程data步程序简介

上传人:博****1 文档编号:512903888 上传时间:2022-08-19 格式:DOC 页数:54 大小:131KB
返回 下载 相关 举报
SAS编程data步程序简介_第1页
第1页 / 共54页
SAS编程data步程序简介_第2页
第2页 / 共54页
SAS编程data步程序简介_第3页
第3页 / 共54页
SAS编程data步程序简介_第4页
第4页 / 共54页
SAS编程data步程序简介_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《SAS编程data步程序简介》由会员分享,可在线阅读,更多相关《SAS编程data步程序简介(54页珍藏版)》请在金锄头文库上搜索。

1、word1、建立数据集data MM;input a $ b c;m=b+c;n+1;/*直接声明一个变量n,数据为累加型定义时不需要等号*/label m=results;cards;aa 1 2bb 3 4 cc 5 6 ;run;proc sort data=MM;/*如果前面使用了rename语句对变量名重新进展了赋值的话,在排序时须使用新的变量名多级排序先总后分,与sql中一样*/by descending m ;run;proc print data=MM;var _numeric_;var _character_;titlechulijieg;run;注意:整体步骤为先生成数据集

2、,然后再排序;最后输出结果;Var之后要有空格;排序时,by desecending m;必须用变量名m,不可用 标签result;A为字符串时,需在后面加符号$,不规定字节数的话不用加点;数据输入时,每个对象须单独起一行;数据输入完毕时,分号必须另起一行;下划线的输入:减号;假如 var numeric 在先,如此输出时数字列在前;假如character在先,如此输出时字符列在先;2、生成空数据集data t2;length name $8. percent 8.;/*定义两个变量name、perceng的类型、长度,各参数均不可省略*/stop;/*没有stop的话会生成缺省变量*/run

3、;2 用infile语句导入外部数据 data graph1; infile e:number.txt delimiter=09x;直接从excel中黏贴至文本文档,分隔符为制表符制表符的表示方法为 09x */ input a b c d; /*因前面已经指明分隔符为制表符,且变量皆为数值型,故虽未再进一步说明,程序仍会自动以分隔符分割变量*/ run; proc print; run;linesize 语句:指定行长度,可突破262字节的限制2、读取指定位置的文件在e盘建立文件夹ee,其中一份sas数据集名为data1.读取data1 的程序为libname tt1 e:ee;/*将文件与

4、ee的路径指定为 tt1*/data a;set tt1.data1;/*复制 路径tt1下名为 data1的数据集*/run;假如要获取data1 的头文件:不平衡分组数据的读入data a;do j=1 to 2;input n;do i = 1 to n;input x y ;output;end;end;drop n i;cards;8/*必须换行,程序读数据8之后,转向执行do i语句,再次读取数据时指针会自动跳转至下一行*/1 11 2 22 3 33 4 44 5 55 6 66 7 77 8 8851 51 2 52 3 53 4 54 5 55;run;3 delimiter

5、 定义分隔符data new1; infile cards delimiter=,;/*定义逗号为分隔符注意。 Infile cards语句需放在下面的 input变量语句之前*/ input x y z; /*输入至一行介绍时会自动完毕。转至下一行,但假如定义了字符型变量长度的话如此不会开始下一变量输入,而是将下一行数据继续认为是未输入完的变量的一局部*/ cards;1,2,34,5,6;data new2; infile cards dlm=ab; /*a b的所有组合形式均将被认为是分隔符*/input x y z;cards;1aa2ab34bb5ba67a8b9;run;proc

6、print data=new1;run;proc print data=new2;run;libname number e:;/*首先指定物理路径*/data/*命名时物理路径在前*/(drop=blabel=analysisrename=(a=location b=time c=proct d=wanted);/*drop语句在先,如此变量b不会进入数据集,对b进展的命名等操作也不会进展*/infile e:number.txt delimiter=09x;input a b c d;run;proc sort data=number.first;by descending location

7、;/*a变量名称已改为location*/run;proc print;run;4 将数据拆分为多列data a; input type $ ;/*表示下面的操作均在这一行进展*/ if type=c then input course $ prof $;/*then 后面需用 input命令*/ else if type=s then input name $ id ; cards; c math zxs s zhao 58888 ; proc print; run;5 读取指定数据Data a; input 1 x 6 y +2 z #2 xx;/*1置于变量前,表示从第一列开始读*/*5

8、.2 共占五位,小数点后占两位*/*+2置于变量前,表示向后跳两列读取。注意,是在将要读取的列上向后跳,而不是以已读完的列为基点向后跳*/*#2 从第二行开始读取*/ cards;234;proc print;run;6 dsd : & 字符输入data topics9; infile datalines dsd;/* dsd 将引号内的内容作为一个字符串整体(不再输出引号,缺省的话引号内的局部将可能被拆开),默认逗号为分隔符(可通过 delimiter= 语句修改分隔符类型),假如遇见相邻的分隔符,如此认为中间有一缺省值在设置输出格式时,假如变量内包含逗号,如此使用双引号将该变量包围,以防止

9、与分隔符混淆没有的情况下,认为换行也是分隔符 */ input speaker : $25. title $40. location & $10.;/*: 第一次遇见分隔符时即认为该变量输入完毕*/* 允许输入值中保存引号,遇见引号右侧的第一个分隔符即认为该变量输入完毕1、 假如变量自左引号开始读取,至右引号位置发现分隔符,但仍不足规定位数时,如此自动认为该变量输入完毕;2、假如至右引号处未发现分隔符,且仍有字符,如此继续读取,直至发现分隔符或读取了规定长度的字符;3、假如已读取了规定位数,但仍未发现右引号与分隔符,如此自动完毕该变量读取,余下的内容与右引号、右引号右侧与分隔符之间的内容都将不

10、被输入,指针直接跳至右引号右侧的第一个分隔符处。假如向右一直未发现分隔符,指针将一直跳至换行符处4、没有dsd的话,假如使用,如此引号内的空格分隔符也将导致变量输入完毕,因为引号内的局部在没有dsd的情况下不被认为是一个字符串整体*/*& 允许字符变量中有空格,或某变量全为空格。此为默认选项& : 同时有& :时,位置在前的&生效,:不再起作用*/*定义字符型变量长度时,$与表示长度的数字和点必须连接在一起,不能有空格*/*既没有 dsd也不规定字符长度的话,系统一直寻找至数据再开始读取,不计算其中有多少分隔符 既没有:也没有的话,程序优先考虑按照字节长度划分变量,而非分隔符规定了字符长度时,

11、读取字符之后读取相邻的数字数据时仍不受分隔符个数影响,但读取字符数据时受其影响*/ datalines;/*datelines 与cards通用*/ Whitfield,Looking at Lift,Blue Room Puentes,Red Room Townsend,Peace in Our Times,Green Room ; proc print ; run;方法2data b;infile datalines delimiter=,;input x1 $ x2 $30. x3 &$15.;cards;Whitfield,Looking at Lift,Blue RoomPuente

12、s,Red RoomTownsend,Peace in Our Times,Green Room;run;使用空格作为分隔符data b;infile datalines dsd delimiter= ;input x1 :$10. x2 $30. x3 $15.;/*没有dsd的话,假如使用,如此引号内的空格分隔符也将导致变量输入完毕,因为引号内的局部在没有dsd的情况下不被认为是一个字符串整体*/cards;Whitfield Looking at Lift Blue RoomPuentes Red RoomTownsend Peace in Our Times Green Room;ru

13、n;proc print;run;另例data a;infile cards dsd delimiter=;/*需定义分隔符且直接输入数据时,在input语句前需使用infile cards语句*/* dsd :分隔符后直接换行将被认为是出现一个缺省值*/*数据直接黏贴在sas中时,excel的制表符应先替换为空格,否如此第二变量仅含有一个字符时易出错*/input a b $50. ;/*因为空格为分隔符,是否在input语句中使用&,可参考运行结果确定 */cards;1119- 1-25112- 11 -319, 50- 11; run;proc print;run;定长、含分隔符数据的

14、读入:的作用data a;input (x1-x5) ($1.);cards;ab/cdefgh/ig/k;run;data _null_;file e:ooo.txt delimiter=?;set a;put x1-x5 ;run;data a2;infile e:ooo.txt delimiter=?;input x1 :$1. x2 :$1. x3 :$1. x4 :$1. x5 :$1. ;/* 指定分隔符与长度时,需有:,否如此分隔符会被认为是字符而读取至结果中。本例中,读取第一个变量a后,字节长度被满足,程序将自动认为第二个变量的读取开始,在没有:的情况下,字节长度被满足前任何内容包括分隔符都将被认为是要输入的内容*/run;7 屡次重复输入文本data;file print; /*file prin

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号