统计软件及应用数据步课件.ppt
《统计软件及应用数据步课件.ppt》由会员分享,可在线阅读,更多相关《统计软件及应用数据步课件.ppt(84页珍藏版)》请在三一办公上搜索。
1、统计软件SAS及应用,-Focus 编程技术,张媛媛 2010年11月,SAS的主要功能,获取数据管理数据分析数据表示数据应用软件开发,总结:Data步直接输入数据,Libname 数据库名 引擎;,DATA SAS数据集名;语句设定变量属性;INPUT 语句;其他SAS语句;CARDS;RUN;,SAS数据集命名方式,SAS数据集采用两级命名方式定名:,Libname.SAS-filename(库标记.文件名),如:名为 DST2.FISH 的数据集,数据集的名字由英文字母、数字、下划线组成,第一个字母必须是字母或下划线,名字最多只能有8 个字符;另外在命名时不区分大小写。,Example,
2、希望把F:My SAS FilesV8new 这个目录与一个名叫libtest 的数据库联系起来,并且将test 数据集放置在其中。可以在编辑窗口输入如下的程序:libname libtest f:my sas filesv8new;data libtest.test;input code price;cards;600381 18600262 16600252 8600009 10600036;run;,SAS读写规则,读取规则:informat或input语句指定存储规则:length语句指定输出规则:format(数据集)或put语句(日志)指定读取规则主要指定两个方面:开始读取位置结束
3、读取位置或读取字符长度,指定读取规则的方式,开始读取位置:一般情况下是前一个变量结束读取位置的后一列,存在一种特殊情况(:/&)结束读取位置:开始读取非空格数据后遇到的第一个空格所在列作为结束读取位置,注意:1、指定开始列碰见:/&格式修饰符时取最大2、指定读入字符数碰见:/&格式修饰符时取最小,例,input x$y,input x$6 y,input x$9 y,input x$10 y,y=e f,y=fgh,注意,对于字符型变量,length语句的位置很重要,data a;length x$3;input x$4.y$;put x=y=;cards;abcd cdefabc de;ru
4、n;,data a;input x$4.y$;length x$3;put x=y=;cards;abcd cdefabc de;run;,WARNING:字符变量 x 的长度已经设置。使用 LENGTH 语句作为 DATA STEP 中的第一个语句可以声明字符变量的长度。,DATA步执行阶段,在执行期间,SAS系统执行以下步骤:(除非另有指向)1)PDV中所有的变量值被初始化为缺失值;2)输入缓冲器据input语句的数据需求,读入源数据文件的相应记录行,并写相应的数据字段到PDV;3)每个语句被顺序执行,并可修改PDV形成当前观测;4)数据步语句一遍执行后,PDV中的值写入数据集;*5)PD
5、V中外部变量初始化为确失值,程序流程回到2);6)对数据源文件的每条记录都按上面步骤执行一次;7)重复以上步骤直到外部文件中数据结束。,DATA步的工作流程,数据步开始,有未读入的观测值吗?,用数据读入语句读入一个观测值,用其它语句对观测值进行运算或处理,把当前的观测值写入数据集,数据集建立完毕,开始下一个数据步或过程步,Y,N,Input语句后的单尾符,一个数据步内可以有多条input语句。但是当执行完一条input语句后,一般将放弃缓冲区内现有源数据行,而从源文件中再取一条记录更新缓冲区。若要保持现有源数据行供下一条input使用其数据,则应在input语句的最后加入跟踪符。例:,data
6、 tmp1;input x;input y;cards;11 22 3344 55 66;run;,data tmp2;input x;input y;cards;11 22 3344 55 66;run;,data tmp3;input x;input y;cards;11 22 3344 55 66;run;,Input语句后的双尾符,一般情况下,当程序执行到数据步底部后,也会从源数据文件中另取一行记录来更新缓冲区内原有数据。若要缓冲区内原有数据不放弃,使其在数据步的下一循环中仍可用,则应在input语句最后加上跟踪符。例:,data tmp5;input x y;cards;11 22
7、3344 55 66;run;,data tmp6;input x y;cards;11 22 3344 55 66;run;,data tmp7;input a;input x y;cards;11 2233 44 55 66;run;,data tmp8;input a;input x 1-2 y;if _n_=10 then stop;cards;11 2233 44 55 66;run;,源数据的指针控制,当SAS从数据行中读取数据时,它用指针来跟踪当前数据的位置;指针控制符可为input语句指示数据源中当前数据所在的行、列位置。列指针控制符列指针控制符“+n”表示指针右移n列(n为负
8、则左移n列);列指针控制符“n”表示指针移到第n列(绝对位置);列指针控制符“character-string”表示把指针移到数据行中字符串character-string后第一个非空格列。行指针控制符行指针控制符“#n”表示指针移到第n行;(当一条观测有几行源数据时,起作用)行指针控制符“#(expression)”表示指针移到表达式的值(必须为整数)所指的行。行指针控制符“/”表示指针移到下一行的第一列。,指针控制符用法示例,行指针用法示例:data tmp1;input name:$10.age/score1-score3;cards;zhangsan 1288 98 67lisi 13
9、77 98 86;run;,列指针用法示例1:data tmp2;m=-1;/*左移一列*/input x 1-4+m y 2 id$2.;/*drop m;*/cards;123452468013579;run;,列指针用法示例2:data tmp3;input id$2.age 3-4 size=x;list;cards;0116size=54.230215size=45.661318size=61.01;run;,Cards/Cards4语句,CARDS语句或DATALINES语句告诉SAS系统下面跟着的是数据行。数据行之前用CARDS语句或DATALINES语句。语句格式:CARDS;
10、或DATALINES;数据行 数据行之前用CARDS语句。data;input var1 var2 var3$;cards;16 20 First;,Cards/Cards4语句,数据行中含有分号时,必须用CARDS 4或DATALINES4语句。语句格式:Cards 4;或DATALINES4;数据行;数据行中含有分号时用CARDS4语句。data;input var1$var2$var3$;cards4;A;B(;);,例,data a;input x$y$;put x=y=;cards4;abcd;cdefabc;de;run;,data a;input x$y$;put x=y=;ca
11、rds4;abcd;cdefabc;de;run;,使用DATA步新建数据集,data SAS-data-set;变量属性设定语句;infile filename option;input 变量输入设定;其他SAS语句;run;,data SAS-data-set;变量属性设定语句;input变量输入设定;其他SAS语句;cards;原始数据;run;,自文本数据文件生成SAS数据集,DATA SAS数据集名;ATTRIB语句设定变量属性;INFILE 文件名 FIRSTOBS=n1 OBS=n2;INPUT 语句;其他SAS语句;RUN;,data CHILD;infile“C:SUNNY例
12、题数据资料CHILD.TXT”;input ID X1$X2 X3 X4;run;,应用举例,应用INFILE语句导入外部数据文件的标准程序 data delinfo(label=退市信息|delist information);format stkcd$6.lstknm$12.lstdt yymmdd10.delistdt yymmdd10.exchflg$1.stktype$1.;informat stkcd$6.lstknm$12.lstdt yymmdd10.delistdt yymmdd10.,exchflg$1.stktype$1.;labelstkcd=股票代码|stock co
13、delstknm=最新股票名称|latest stock namelstdt=股票上市日|list datedelistdt=退市日期|delist dateexchflg=交易所标识|exchange flagstktype=股票类型|stock type;infile d:resdatdelinfo.txt delimiter=09x missover dsd firstobs=2;input stkcd$6.lstknm$12.lstdt yymmdd10.delistdt yymmdd10.exchflg stktype 1.;run;例中,09x是TAB的十六进制表示,这里规定del
14、imiter=09x是不能去掉的,去掉的话就出错了。由于文本数据不规则,须中或:控制变量delistDt.,Infile选项说明,INFILE语句用来定义一个外部数据文件,文件中的数据用INPUT语句读取。外部文件可以是已存在的磁盘文件,也可以是从键盘上输入的数据行。语句格式 INFILE file-specification;file-specification选项说明:EXTERNAL FILE规定一个外部文件的完整路径和文件名。CARDS|CARDS4|DATALINES|DATALINES4选项指明输入数据为CARDS(CARDS4,DATALINES,DATALINES4)后面的数据
15、流,而非来自外部数据文件。,option-list选项说明(部分):,Delimiter=选项应用,data a;infile cards delimiter=,;input x y z;cards;3,6,91,3,58,8,8;例中,要输入的数据用逗号分隔,创建SAS数据集时用选项DELIMITER=,。,数据集a,DSD选项应用,data scores;infile datalines delimiter=,;input test1 test2 test3;datalines;91,87,9597,92,1,1;例中,分隔符为逗号,但第二个观测值的两个相邻分隔符之间还有缺失值,没有DSD
16、选项时,这两个相邻的分隔符组成一个分隔符,于是,输入数据时会出错。,DSD选项应用,上例加上DSD选项,将两个相邻分隔符之间的数作为缺失值处理 data scores;infile datalines delimiter=,DSD;input test1 test2 test3;datalines;91,87,9597,92,1,1;通常情况下,同时加上MISSOVER和 DSD两个选项是良好的编程习惯。,Missover选项应用,data a;input x$y$;put x=y=;cards;abcd cdefabc de;run;,data a;infile cards missover
17、;input x$y$;put x=y=;cards;abcd cdefabc de;run;,SAS数据集的建立,访问外部数据文件,SAS系统访问的外部文件可以分为两类:PC格式的数据文件;流行数据库(DBMS)文件。,常用的访问外部文件的方法,使用Import菜单由文本文件读入,从SAS下拉菜单选择:,在Windows操作系统中,外部文件是指文本文件(格式为.dbf、.xls、.wk1、.wk3等);对一些用户规定格式的文件可提供EFI(External File Interface外部文件界面)。,练习,通过infile语句导入class.txt文件中的第三行以后的所有数据。通过菜单操作
18、导入class.txt文件、fitness.xls文件中的数据。,使用DATA步新建数据集,data SAS-data-set;变量属性设定语句;infile filename option;input 变量输入设定;其他SAS语句;run;,data SAS-data-set;变量属性设定语句;input变量输入设定;其他SAS语句;cards;原始数据;run;,其他SAS语句,SAS表达式数据步中的常用语句,SAS表达式,SAS数据步程序中的计算由SAS表达式完成;SAS表达式通过运算符、括号等,将调用的常量、变量和函数连接起来,得到一个计算结果。,SAS运算符,SAS运算符包括算术、比
19、较和逻辑等运算符。,算术运算符 作用 举例+加法 sum=x+y;-减法 diff=x-y;*乘法 mult=x*y;/除法 divide=x/y;*幂运算 raise=x*y;|字符串拼接 str=str1|str2;,SAS运算符,比较运算符,运算符 符号 意义,逻辑运算符,SAS运算符包括算术、比较和逻辑等运算符。,SAS运算符,运算符IN是一个SAS特有的比较运算符,用来检查某个变量的取值是否在一个给定列表中,比如 prov in(北京,上海,天津,重庆)可以判断变量prov的取值是否为四个直辖市之一。,SAS函数,SAS函数返回由它的参数计算得到的结果,SAS提供了远多于一般程序语言
20、的标准函数,主要包括数学函数、数组函数、字符函数、日期和时间函数、分布密度函数和分布函数、分位数函数、随机数函数、样本统计函数等,它们可以直接用于数据步计算中。,例,SAS函数返回由它的参数计算得到的结果,DATA ABC;INPUT x1 x2 x3 x4;y=sum(of x1,x2,x3,x4);CARDS;1 2 3 4 2 3 4 5 5 6 7 8;RUN;,常用字符函数,TRIM(s)返回去掉字符串s的尾随空格的结果;UPCASE(s)把字符串s中所有小写字母转换为大写字母后的结果;LOWCASE(s)把字符串s中所有大写字母转换为小写字母后的结果;INDEX(s,s1)查找s1
21、在s中出现的位置,找不到时返回0;RANKS(s)字符s的ASCII码值;等等,常用日期和时间函数,MDY(m,d,yr)生成yr年m月d日的SAS日期;YEAR(date)由SAS日期值date得到年;MONTH(date)由SAS日期值date得到月;DAY(date)由SAS日期值date得到日;WEEKDAY(date)由SAS日期值date得到星期几;QTR(date)由SAS日期值date得到季度值;HMS(h,m,s)由小时h、分钟m、秒s生成SAS时间值;DHMS(d,h,m,s)由SAS日期值d、小时h、分钟m、秒s生成SAS时间值;等等,日期常数和函数,日期时间直接作为数字
22、型常数:ddMMMyy D(例如:12JAN96d、14:20t、13JUL1998:14:20:32dt)一些操作日期的函数:DATE()取今天的日期作为SAS日期值,TODAY()-取当日的日期作为SAS日期值,DATETIME()-取当日的日期和时间作为SAS日期时间值,TIME()-取今天的时间作为SAS时间值,HOUR(time|datetime)由SAS的时间或日期时间得到小时,MINUTE(time|datetime)-由SAS的时间或日期时间得到分钟,SECOND(time|datetime)-由SAS的时间或日期时间得到秒钟,日期常数和函数,YEAR(date)-由SAS日期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计 软件 应用 数据 课件
链接地址:https://www.31ppt.com/p-6599366.html