金融数据库――15数据管理_第1页
金融数据库――15数据管理_第2页
金融数据库――15数据管理_第3页
金融数据库――15数据管理_第4页
金融数据库――15数据管理_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章数据管理,清华大学经济管理学院朱世武zhushw,SAS系统提供的过程按其用途可分为四大类:数据管理;基础统计;数据呈现;数据访问。和任何一种编程语言一样,SAS系统有一些数据管理过程,用于实现常用的中间操作或数据转换。,本章将介绍的数据管理过程:,数据集排序;数据集转置;改变输出地点;添加观测;数据库复制。,数据集排序,利用SAS的排序过程可以对数据集中的观测重新排序。SAS许多和BY配合使用的语句,如对数据集进行合并的语句或更新语句等,使用前必须先对BY变量进行排序。排序过程句法PROCSORT;BYvariable-1variable-n;,PROCSORT语句,PROCSORT;选项说明:,其中:选项FORCE强行实施多余排序。排序并替换原来加索引的或取子集的数据集,即没有规定OUT=选项时,如果没有规定FORCE,就不能对有索引的数据集进行排序和替换。没有规定OUT=选项时必须使用FORCE的选项有:OBS=系统选项;FIRSTOBS=系统选项;DATA=数据集中的数据集选项WHERS=;PROCSORT步用WHERE语句。,BY语句,BYvariable-1variable-n;PROCSORT中必须使用BY语句,BY语句中可以规定任意多个变量。BY语句中规定多个变量时,SORT过程首先按第一个变量排序,然后是第二个变量等。BY语句中可以规定的选项:DESCENDING对变量按下降次序排序。,应用举例,例15.1按多变量排序。dataa;setfdata.a1a0001;year=year(date);qtr=qtr(date);month=month(date);procsortdata=aout=b;byyearqtrmonth;run;例中,对上证数据A1A0001按年、季和月排序。,例15.2按单变量降序排列。procsortdata=fdata.a600001out=a;bydescendingclpr;procprintdata=a(obs=3)noobs;vardateclpr;run;例中,按收盘价CLPR的降序排列。,例15.3显示排序后BY组的第一个观测。optionsnodatepageno=1linesize=80pagesize=60;procsortdata=fdata.accountout=townsnodupkey;bytown;run;procprintdata=towns;vartowncompanydebtaccountnumber;titleTownsofCustomerswithPast-DueAccounts;run;,数据集转置,转置就是把数据集的观测变为变量,变量变为观测。利用SAS的转置过程可以对数据集进行转置。,转置过程句法,PROCTRANSPOSE;BYvariable-1variable-n;COPYvariable(s);IDvariable;IDLABELvariable;VARvariable(s);,语句说明:,PROCTRANSPOSE语句,PROCTRANSPOSE;选项说明:,VAR语句和ID语句,VAR语句VARvariable-list;VAR语句列出要转置的变量。没有VAR语句时,则没有列在其它语句里的所有数值变量被转置。字符变量若要转置必须在VAR语句中列出。没有被转置的变量从新数据集中删除,要保留时须将它们在COPY或BY语句中列出。,ID语句IDvariable;ID语句规定输入数据集中一个变量。ID变量的值为转置后数据集的变量名。在没有选项LET时,ID变量的值在数据集中只能出现一次,使用BY语句,BY组内只包含最后的ID值。必要时过程会将ID变量的值改为有效的SAS名子。如将字符”+”,”-”和”.”改为”P”,”N”和”D”。若第一个字符是数学,则用下划线(_)作为这个值的词头。使用ID语句时,ID变量的缺失值将从输出数据集中删去。,应用举例,例15.4ID变量的值为转置后数据集的变量名。proctransposedata=fdata.classout=alet;idname;procprint;run;例中,原数据集CLASS中变量NAME的值为转置后数据集A的变量名,对所有数值变量转置。数据集A中还有一变量_NAME_.proctransposedata=fdata.r_monthout=alet;iddate;procprint;run;例中,原数据集R_MONTH中变量DATE的值为转置后数据集A的变量名,对所有数值变量转置。数据集A中还有一变量_NAME_和_LABEL_.,例15.5BY组内最后一个ID值的观测被转置。proctransposedata=fdata.classout=alet;idsex;procprint;run;结果显示:,proctransposedata=fdata.classout=alet;idsex;bysex;procprint;run;结果显示:,proctransposedata=fdata.classout=a;varnameheightweight;copysexage;procprint;run;procsortdata=fdata.classout=a;byname;proctransposedata=alet;byname;procprint;run;,例15.6规定转置后数据集变量名的前缀。optionsnodatepageno=1linesize=80pagesize=40;proctransposedata=fdata.scoreout=idnumbername=Testprefix=sn;idstudentid;run;procprintdata=idnumbernoobs;titleStudentTestScores;run;,例15.7规定转置后数据集变量名的标签。optionsnodatepageno=1linesize=80pagesize=40;proctransposedata=fdata.scoreout=idlabelname=Testprefix=sn;idstudentid;idlabelstudent;run;procprintdata=idlabellabelnoobs;titleStudentTestScores;run;,例15.8对每个BY组转置。optionsnodatepageno=1linesize=80pagesize=40;proctransposedata=fdata.fishdataout=fishlength(rename=(col1=Measurement);varlength1-length4;bylocationdate;run;procprintdata=fishlengthnoobs;titleFishLengthDataforEachLocationandDate;run;,例15.9ID变量有重复值时命名转置后的变量。optionsnodatepageno=1linesize=64pagesize=40;proctransposedata=fdata.stocksout=closelet;bycompany;iddate;run;procprintdata=closenoobs;titleClosingPricesforHorizonKitesandSkyHiKites;run;,例15.10对转置后的数据集作统计分析。,optionsnodatepageno=1linesize=80pagesize=40;datasplit;setfdata.weights;arrays7s1-s7;subject+1;doTime=1to7;strength=stime;output;end;drops1-s7;run;procprintdata=split(obs=15)noobs;titleSplitDataSet;title2First15ObservationsOnly;run;,/*接左侧*/proctransposedata=splitout=totsplitprefix=Str;byprogramsubject;copytimestrength;varstrength;run;procprintdata=totsplit(obs=15)noobs;titleTotsplitDataSet;title2First15ObservationsOnly;run;,改变输出地点,缺省情况下,SAS过程输出到OUTPUT窗口,SAS日志输出到LOG窗口。利用SAS的PRINTTO过程可以设定SAS过程和日志的输出地点。PRINTTO过程有以下功能:改变过程输出的目的地;改变SAS日志输出的目的地;有选择地限制SAS输出;将输出结果存放在永久文件中;将输出直接送到打印机上;将SAS的输出作为输入数据(这时需要一些附加的程序语句)。,PRINTTO过程句法,PROCPRINTTO;选项说明注意:一般情况下,PROCPRINTTO后面一定要加RUN语句。若省略RUN语句,则会丢失PRINTTO后面DATA步或PROC步第一行的输出。,应用举例,例15.11将SAS日志输出到外部永久文件。procprinttolog=d:log.dat;/*直接输出到永久文件中*/filenamef1d:out.txt;procprinttolog=f1;/*输出到文件标记*/例15.12将运行结果输出到外部永久文件。filenamef2d:out.list;procprinttoprint=f2;/*输出到文件标记*/procprinttoprint=d:out.list;/*直接输出到永久文件中*/,例15.13直接打印输出结果。filenamefprinter;procprinttoprint=f;/*直接打印*/procprinttoprint=print;/*返回到缺省输出地点*/例15.14替换原输出文件。procprinttoprint=d:out.txtlog=d:log.datnew;procprintdata=fdata.class;run;,例15.15直接输出为SAS目录册中的条目。optionsnodatepageno=1linesize=80pagesize=60source;procprinttolog=test.loglabel=Inventoryprogramnew;run;procprinttoprint=fdata.cat1.inventry.outputlabel=Inventoryprogramnew;run;procreportdata=fdata.inventrynowindowsheadskip;columndeptitemseasonyear;titleCurrentInventoryListing;run;procprintto;run;,例15.16用输出结果作为输入文件。,/*接左侧*/procprinttoprint=print;run;dataprobtest;infilerouted;inputword1$;ifword1=卡方thendo;inputdfchisqprob;keepchisqprob;output;end;run;,datatest;don=1to1000;x=int(ranuni(77777)*7);y=int(ranuni(77777)*5);output;end;run;filenameroutedD:fdataF1.txt;procprinttoprint=routednew;run;procfreqdata=test;tablesx*y/chisq;run;,添加观测,利用SAS的APPEND过程可以将一个SAS数据集的观测添加到另一个SAS数据集的后面。当然,可以用DATA步中SET语句实现观测的添加,但用这种方法连接数据集时,SAS系统必须处理两个数据集中的所有观测后再产生一个新的数据集。APPEND过程避免处理原数据集中的数据,直接把新观测添加到原始数据集的后面。注意:APPEND过程只对SAS数据集(类型为DATA的数据库成员)进行操作.,APPEND过程句法,PROCAPPENDBASE=SAS-data-set;APPEND过程中只需要一个语句。选项说明:,例15.17强迫PROCAPPEND连接两数据集的情况。没有BASE=的数据集的变量;与BASE=的数据集中变量的类型不相同;多于BASE=的数据集中变量。,应用举例,例15.18有条件添加数据。procappendbase=data1data=data2(where=(X=1);run;procappendbase=adata=fdata.a600001(where=(year(date)=1999);run;例中,使用数据集选项WHERE=或WHERE语句来限制DATA=的数据集中只有满足条件的观测被加到BASE=的数据集中。,数据库复制,利用SAS的COPY过程可以复制整个SAS数据库或其中的数据库成员。,COPY过程句法,PROCCOPYOUT=libref-1IN=libref-2;EXCLUDESAS-file(s);SELECTSAS-file(s);子语句说明:Select规定要拷贝数据库IN=中的成员;Exclude规定不拷贝数据库IN=中的成员。注意:在PROCCOPY步

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论