第三章数据管理精选PPT.ppt

上传人:石*** 文档编号:88357549 上传时间:2023-04-25 格式:PPT 页数:45 大小:2.01MB
返回 下载 相关 举报
第三章数据管理精选PPT.ppt_第1页
第1页 / 共45页
第三章数据管理精选PPT.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述

《第三章数据管理精选PPT.ppt》由会员分享,可在线阅读,更多相关《第三章数据管理精选PPT.ppt(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第三章数据管理第三章数据管理第1页,本讲稿共45页Chapter3 SASChapter3 SAS数据管理数据管理一、一、SASSAS数据集的建立数据集的建立二、二、SASSAS数据集的浏览与修改数据集的浏览与修改三、三、SASSAS数据集的高级管理数据集的高级管理下一页返回本节首页第2页,本讲稿共45页一、一、SASSAS数据集的建立数据集的建立(一)使用(一)使用INPUTINPUT语句输入数据语句输入数据(二)利用(二)利用 VIEWTABLE VIEWTABLE 新建数据集新建数据集(三)将其他格式的数据文件导入数据集(三)将其他格式的数据文件导入数据集上一页下一页返回本节首页第3页,

2、本讲稿共45页(一)使用(一)使用INPUTINPUT语句输入数据语句输入数据程序中直接输入程序中直接输入CARDS;CARDS;数据行数据行;infileinfile语句读入数据语句读入数据上一页下一页返回本节首页第4页,本讲稿共45页程序中直接输入程序中直接输入自由格式自由格式列方式列方式格式输入格式输入上一页下一页返回本节首页第5页,本讲稿共45页自由格式自由格式 按顺序列出每个观测的各个变量名,中间用按顺序列出每个观测的各个变量名,中间用空格分开。变量如果是字符型的需要在变量名后空格分开。变量如果是字符型的需要在变量名后面加一个面加一个$符号,符与变量名可以直接相连也可符号,符与变量名

3、可以直接相连也可以隔一个空格。以隔一个空格。例如:例如:使用自由格式的优点是:使用自由格式的优点是:使用简单;输入数据时不必上下对齐;不需要知使用简单;输入数据时不必上下对齐;不需要知道每个变量的具体列数而只需知道它的次序。道每个变量的具体列数而只需知道它的次序。上一页下一页返回本节首页第6页,本讲稿共45页data sasuser.score1;data sasuser.score1;input name$sex$math chinese;input name$sex$math chinese;cards;cards;李明李明 男男 92 98 92 98张红艺张红艺 女女 89 106 8

4、9 106王思明王思明 男男 86 90 86 90张聪张聪 男男 98 109 98 109刘颍刘颍 女女 80 110 80 110;run;run;上一页下一页返回本节首页第7页,本讲稿共45页 使用这种格式需要注意以下几点:使用这种格式需要注意以下几点:数据排列格式必须统一,数据排列格式必须统一,每行数据代表一个观测,每行数据代表一个观测,各各数据值之间必须用空格或制表符分隔开;数据值之间必须用空格或制表符分隔开;缺失的数据用点号表示;缺失的数据用点号表示;字符型数据的长度不能超过字符型数据的长度不能超过 8 8 个字符;个字符;变量名与数据值要对应。变量名与数据值要对应。使用这种办法

5、需要在编辑窗口中输入全部数据内容,如果数据使用这种办法需要在编辑窗口中输入全部数据内容,如果数据量不大的话还可以忍受,但是如果是海量数据,那么使用这种办法量不大的话还可以忍受,但是如果是海量数据,那么使用这种办法几乎是不可能了,这时就需要从其他文件来将数据导入数据集。几乎是不可能了,这时就需要从其他文件来将数据导入数据集。上一页下一页返回本节首页第8页,本讲稿共45页列方式列方式 此时需要在每个变量名(及此时需要在每个变量名(及$符)后面列出该变量在数据行中所占据的符)后面列出该变量在数据行中所占据的列起始位置与结束位置,比如上面的例子可以列起始位置与结束位置,比如上面的例子可以改写成改写成。

6、列方式有如下特点:。列方式有如下特点:要求数据行各项上下对齐要求数据行各项上下对齐 各项之间可以没有任何分隔,连续写在一起各项之间可以没有任何分隔,连续写在一起 字符型数据长度可以超过字符型数据长度可以超过8 8个字符,中间可以有空格,头尾的空格个字符,中间可以有空格,头尾的空格仍将被忽略。仍将被忽略。不论字符型变量还是数值型变量如果指定列位置都是空白则输入值为缺失值。不论字符型变量还是数值型变量如果指定列位置都是空白则输入值为缺失值。小数点仍表示数值型和字符型变量的缺失值。小数点仍表示数值型和字符型变量的缺失值。可以只输入数据行中的某些项而忽略其它项。可以只输入数据行中的某些项而忽略其它项。

7、由于列方式不要求数据项之间分开,所以经常用来输入紧缩格式的由于列方式不要求数据项之间分开,所以经常用来输入紧缩格式的数据。比如,我们要输入一批身份证号码,但只输入其中的出生年、数据。比如,我们要输入一批身份证号码,但只输入其中的出生年、月、日信息,就可以用如下程序:月、日信息,就可以用如下程序:上一页下一页返回本节首页第9页,本讲稿共45页data pids;data pids;input year 7-8 mon 9-10 day 11-12;input year 7-8 mon 9-10 day 11-12;cards;cards;11010375120922311010375120922

8、3110101690215005110101690215005;run;run;上一页下一页返回本节首页第10页,本讲稿共45页data sasuser.score3;data sasuser.score3;input name$1-10 sex$11-13 math 14-16 chinese 18-20;input name$1-10 sex$11-13 math 14-16 chinese 18-20;cards;cards;李明李明 男男 92 98 92 98张红艺张红艺 女女 89 106 89 106王思明王思明 男男 86 90 86 90张聪张聪 男男 98 109 98 1

9、09刘颍刘颍 女女 80 110 80 110;run;run;上一页下一页返回本节首页第11页,本讲稿共45页格式输入格式输入 有格式输入就是在变量名后加格式名。其中有格式输入就是在变量名后加格式名。其中最常见的是用来输入日期。数据中的日期写法经最常见的是用来输入日期。数据中的日期写法经常是多种多样的,比如常是多种多样的,比如19981998年年1010月月9 9日可以写成日可以写成“1998-10-9”“1998-10-9”,“19981009”“19981009”,“9/10/98”“9/10/98”等等等,为读入这样的日期数据就需要为它指定特殊等,为读入这样的日期数据就需要为它指定特殊

10、的日期输入格式。另外,日期数据在的日期输入格式。另外,日期数据在SASSAS中是按数中是按数值存储的,所以如果要显示日期值,也需要为它值存储的,所以如果要显示日期值,也需要为它指定特殊的日期输出格式。例如:指定特殊的日期输出格式。例如:上一页下一页返回本节首页第12页,本讲稿共45页data a;data a;input date input date yymmddyymmdd8.sales;8.sales;format format date yymmdd10.;date yymmdd10.;cards;cards;56-6-13 110056-6-13 110067.12.15 12006

11、7.12.15 120078 10 2 130078 10 2 1300891001 1400891001 140019960101 150019960101 150020020901 160020020901 1600;run;run;proc print;run;proc print;run;上一页下一页返回本节首页第13页,本讲稿共45页yymmdd8.yymmdd8.指明日期数据占据指明日期数据占据8 8列位置。因此在列位置。因此在cardscards中,中,如果日期数据不满如果日期数据不满8 8列要用空格补充,不能让后面列要用空格补充,不能让后面的数据进入这的数据进入这8 8列。这样

12、可以输入没有世纪数,年、列。这样可以输入没有世纪数,年、月、日之间用减号或小数点或空格分隔的日期,输月、日之间用减号或小数点或空格分隔的日期,输入入YYMMDD YYMMDD 格式的六位数的日期(一位数的月、日格式的六位数的日期(一位数的月、日前面补前面补0 0),输入带世纪数的),输入带世纪数的YYYYMMDDYYYYMMDD格式的日期格式的日期(一位数的月、日前面补(一位数的月、日前面补0 0)。)。上一页下一页返回本节首页第14页,本讲稿共45页YYMMDD10.YYMMDD10.输入格式可以输入带世纪数的中间有分隔符或无分隔的日期,如:输入格式可以输入带世纪数的中间有分隔符或无分隔的日

13、期,如:data b;data b;input date yymmdd10.sales;input date yymmdd10.sales;format date yymmdd10.;format date yymmdd10.;cards;cards;56-6-13 110056-6-13 110067.12.15 120078 10 2 130067.12.15 120078 10 2 1300891001 1400891001 140019960101 150019960101 1500;run;run;proc print;run;proc print;run;第15页,本讲稿共45页F

14、ORMATFORMAT语句规定输出日期变量时使用的显示格式。语句规定输出日期变量时使用的显示格式。结果为:结果为:1 1956-06-13 1100 1 1956-06-13 1100 2 1967-07-11 12002 1967-07-11 12003 1978-10-02 13003 1978-10-02 13004 1989-10-01 14004 1989-10-01 14005 1996-01-01 15005 1996-01-01 15006 2002-09-01 16006 2002-09-01 1600上一页下一页返回本节首页第16页,本讲稿共45页infileinfile语

15、句读入数据语句读入数据 使用程序中直接输入数据的方法,需要在编辑窗口使用程序中直接输入数据的方法,需要在编辑窗口中输入全部数据内容。如果数据量不大的话还可以忍受,中输入全部数据内容。如果数据量不大的话还可以忍受,但是如果是海量数据,那么使用这种办法几乎是不可能了,但是如果是海量数据,那么使用这种办法几乎是不可能了,这时就需要从其他文件来将数据导入数据集,使用这时就需要从其他文件来将数据导入数据集,使用 infile infile 命命令来指定数据文件的位置。例如:令来指定数据文件的位置。例如:data sasuser.score2;sasuser.score2;infile f:score.t

16、xt;infile f:score.txt;input name$sex$math chinese;input name$sex$math chinese;run;上一页下一页返回本节首页第17页,本讲稿共45页(二)利用(二)利用 VIEWTABLE VIEWTABLE 新建数据集新建数据集 除了编辑程序创建数据集以外,还有很多种除了编辑程序创建数据集以外,还有很多种不需要编程的方法,例如可以直接使用不需要编程的方法,例如可以直接使用VIEWTABLE VIEWTABLE 方式,方式,VIEWTABLE VIEWTABLE 是是 SAS SAS 系统中一系统中一种通过可视的方式管理数据的工具

17、。种通过可视的方式管理数据的工具。上一页下一页返回本节首页第18页,本讲稿共45页(三)将其他格式的数据文件导入数据集(三)将其他格式的数据文件导入数据集 SAS SAS系统提供了将系统提供了将SASSAS数据集与标准格式文件数据集与标准格式文件和用户自定义格式文件之间的互相转换功能。和用户自定义格式文件之间的互相转换功能。SAS SAS 的导入向导可以帮助我们完成这项工作的导入向导可以帮助我们完成这项工作 。SAS SAS 系统可以转换的标准格式的数据文件包括系统可以转换的标准格式的数据文件包括XLS,WK1,TXTXLS,WK1,TXT等。等。上一页下一页返回本节首页第19页,本讲稿共45

18、页二、二、SASSAS数据集的浏览与修改数据集的浏览与修改(一)利用(一)利用viewtableviewtable方式方式(二)(二)SAS INSIGHT SAS INSIGHT 方式方式上一页下一页返回本节首页第20页,本讲稿共45页三、三、SASSAS数据集的高级管理数据集的高级管理(一一)SAS)SAS数据步的运行机制数据步的运行机制(二二)数据集的复制与修改数据集的复制与修改(三三)拆分数据集拆分数据集(四四)数据集的纵向合并数据集的纵向合并(五五)数据集的横向合并数据集的横向合并(六六)数据集的更新数据集的更新上一页下一页返回本节首页第21页,本讲稿共45页(一)(一)SASSAS

19、数据步的运行机制数据步的运行机制 SAS SAS语言的编程计算功能主要在数据步实现,语言的编程计算功能主要在数据步实现,一个一个SASSAS数据步相当于一个单独运行的程序。但是,数据步相当于一个单独运行的程序。但是,SASSAS语言又是一个专用数据处理语言,所以语言又是一个专用数据处理语言,所以SASSAS数数据步有其它语言所没有的特点。请看例子据步有其它语言所没有的特点。请看例子:上一页下一页返回本节首页第22页,本讲稿共45页data a;data a;put x=y=z=;put x=y=z=;input x y;input x y;z=x+y;z=x+y;put x=y=z=;put

20、x=y=z=;cards;cards;10 2010 20100 200100 200;run;run;运行后在运行后在LOGLOG窗口显示如下记录:窗口显示如下记录:X=.Y=.Z=.X=.Y=.Z=.X=10 Y=20 Z=30X=10 Y=20 Z=30X=.Y=.Z=.X=.Y=.Z=.X=100 Y=200 Z=300X=100 Y=200 Z=300X=.Y=.Z=.X=.Y=.Z=.NOTE:The data set WORK.A has 2 NOTE:The data set WORK.A has 2 observations and 3 variables.observati

21、ons and 3 variables.上一页下一页返回本节首页第23页,本讲稿共45页 从这个例子可以看出从这个例子可以看出SASSAS数据步程序和普通程序的一个数据步程序和普通程序的一个重大区别重大区别:SAS SAS数据步如果有数据输入,比如用数据步如果有数据输入,比如用INPUTINPUT、SETSET、MERGEMERGE、UPDATEUPDATE、MODIFYMODIFY等语句读入数据,则数据步中隐含了一个循环,等语句读入数据,则数据步中隐含了一个循环,即数据步程序执行到最后一个语句后,会返回到数据步内的第一即数据步程序执行到最后一个语句后,会返回到数据步内的第一个可执行语句开始继

22、续执行,直到读入数据语句(个可执行语句开始继续执行,直到读入数据语句(INPUTINPUT、SETSET、MERGEMERGE、UPDATEUPDATE、MODIFYMODIFY等)读入了数据结束标志为止才停止执行等)读入了数据结束标志为止才停止执行数据步,并把读入的各个观测写入在数据步,并把读入的各个观测写入在DATADATA语句中指定的数据集。语句中指定的数据集。如果没有数据输入而只是直接计算,则数据步程序没有此隐含循如果没有数据输入而只是直接计算,则数据步程序没有此隐含循环。数据步因为有这样一个隐含循环,所以也提供了用来查询某环。数据步因为有这样一个隐含循环,所以也提供了用来查询某一步是

23、第几次循环的特殊变量一步是第几次循环的特殊变量 _N_ _N_,它的值为数据步循环计数值。,它的值为数据步循环计数值。第24页,本讲稿共45页SAS数据步流程图第25页,本讲稿共45页(二二)数据集的复制与修改数据集的复制与修改 用用SETSET语句语句把一个已有数据集复制到一个新数据集,同时还可以把一个已有数据集复制到一个新数据集,同时还可以进行修改。比如要把数据集进行修改。比如要把数据集work.scorework.score复制为数据集复制为数据集sasuser.score1sasuser.score1,只要用如下程序:,只要用如下程序:data sasuser.score1;data

24、sasuser.score1;set score;set score;run;run;这样的程序流程中也有一个隐含循环,程序在数据步内反复循环,直这样的程序流程中也有一个隐含循环,程序在数据步内反复循环,直到输入数据集到输入数据集score score 最后一个观测读过。最后一个观测读过。上一页下一页返回本节首页第26页,本讲稿共45页 我们还可以用我们还可以用SASSAS程序语句对生成的数据集进程序语句对生成的数据集进行修改。比如,我们把超过行修改。比如,我们把超过100100分的语文成绩都改分的语文成绩都改为为100100分,就可以用如下程序:分,就可以用如下程序:data scorea;

25、data scorea;set score;set score;if chinese100 then chinese=100;if chinese100 then chinese=100;run;run;第27页,本讲稿共45页KEEPKEEP与与DROPDROP语句语句KEEPKEEP语句用来保留指定的变量,如:语句用来保留指定的变量,如:data scoreb;data scoreb;set score;set score;keep name sex;keep name sex;run;run;生成的数据集生成的数据集scorebscoreb只包含只包含NAMENAME和和SEXSEX两个

26、变量。两个变量。DROPDROP语句用来指定要丢弃的变量,如:语句用来指定要丢弃的变量,如:data scoreb;data scoreb;set score;set score;drop name sex;drop name sex;run;run;生成的数据集不包含生成的数据集不包含namename和和sexsex二个变量的值二个变量的值第28页,本讲稿共45页子集子集IFIF语句语句 可以通过可以通过“子集子集if”if”语句指定一个条件取出数据集的某些行语句指定一个条件取出数据集的某些行组成的子集。组成的子集。data scorec;data scorec;set score;set

27、score;IF math=90 and chinese=100;IF math=90 and chinese=100;run;run;注意:注意:子集子集IFIF语句不同于我们前面所讲的分支语句,它没有语句不同于我们前面所讲的分支语句,它没有THENTHEN部分,只有条件,用于取出满足条件的行子集。部分,只有条件,用于取出满足条件的行子集。上一页下一页返回本节首页第29页,本讲稿共45页(三三)拆分数据集拆分数据集 有时我们需要根据某一分类原则把数据行分有时我们需要根据某一分类原则把数据行分别存放到不同的数据集。比如,我们希望把数据别存放到不同的数据集。比如,我们希望把数据集集scoresc

28、ore中的所有男生的记录放到数据集中的所有男生的记录放到数据集scoremscorem中,中,把所有女生的记录放到把所有女生的记录放到scorefscoref中,可以使用如下中,可以使用如下程序:程序:上一页下一页返回本节首页第30页,本讲稿共45页data scorem scoref;data scorem scoref;set score;set score;select(sex);select(sex);when(when(男男)output scorem;)output scorem;when(when(女女)output scoref;)output scoref;otherwise

29、 put sex=otherwise put sex=有错有错;end;end;drop sex;drop sex;run;run;proc print data=scorem;run;proc print data=scorem;run;proc print data=scoref;run;proc print data=scoref;run;第31页,本讲稿共45页 注意:注意:在在DATADATA语句中,我们指定了两个数据语句中,我们指定了两个数据集名,这表示要生成两个数据集。程序中用集名,这表示要生成两个数据集。程序中用SETSET语语句引入了一个数据集,这个数据集的观测如何分句引入了

30、一个数据集,这个数据集的观测如何分配到两个结果数据集中呢?关键在于配到两个结果数据集中呢?关键在于OUTPUTOUTPUT语句。语句。OUTPUTOUTPUT语句是一个可执行语句,它使得当前观测语句是一个可执行语句,它使得当前观测被写到语句指定的数据集中。这样,我们根据被写到语句指定的数据集中。这样,我们根据SELECTSELECT的结果把不同性别分别放到了两个不同数的结果把不同性别分别放到了两个不同数据集中。据集中。第32页,本讲稿共45页 OUTPUT OUTPUT语句还可以用来强行写入数据集而不必语句还可以用来强行写入数据集而不必象我们在数据步流程图中说明的那样等到数据步最象我们在数据步

31、流程图中说明的那样等到数据步最后一个语句完成。数据步中有了后一个语句完成。数据步中有了OUTPUTOUTPUT语句后数据语句后数据步流程中不再有自动写入观测的操作,而只能由步流程中不再有自动写入观测的操作,而只能由OUTPUTOUTPUT语句指定输出。不指定数据集名的语句指定输出。不指定数据集名的OUTPUTOUTPUT语语句输出到第一个结果数据集。比如下面的程序生成句输出到第一个结果数据集。比如下面的程序生成一个包含一个包含1 1到到1010的及其平方的有的及其平方的有1010个观测的数据集:个观测的数据集:第33页,本讲稿共45页data test;data test;do i=1 to

32、10;do i=1 to 10;j=i*i;j=i*i;output;output;end;end;run;run;proc print;run;proc print;run;如果删去上面的如果删去上面的OUTPUTOUTPUT语句则结果数据集中只有语句则结果数据集中只有i=11i=11,j=100j=100的一个观测。的一个观测。上一页下一页返回本节首页第34页,本讲稿共45页(四)数据集的纵向合并(四)数据集的纵向合并 几个结构相同的数据集可以上下地连接到一起。比如,我几个结构相同的数据集可以上下地连接到一起。比如,我们有四个班的学生情况的数据集们有四个班的学生情况的数据集Class1-C

33、lass4Class1-Class4,每个数据集,每个数据集包含一个班学生的学号、姓名、性别信息,我们希望把这些数包含一个班学生的学号、姓名、性别信息,我们希望把这些数据集合并为一个大数据集,可以用如下代码:据集合并为一个大数据集,可以用如下代码:data classes;data classes;set class1 class2 class3 class4;set class1 class2 class3 class4;run;run;可见,要把若干个结构相同的数据集合并为一个数据集,只要在可见,要把若干个结构相同的数据集合并为一个数据集,只要在DATADATA语句中指定要生成的大数据集的

34、名字,然后在数据步中使用语句中指定要生成的大数据集的名字,然后在数据步中使用SETSET语句并在语句并在SETSET语句中依次列出各小数据集。语句中依次列出各小数据集。上一页下一页返回本节首页第35页,本讲稿共45页 有时我们需要在合并数据集时加入一个变量来指示每一个观测原来来自哪一个小数据集,有时我们需要在合并数据集时加入一个变量来指示每一个观测原来来自哪一个小数据集,这可以在这可以在SETSET语句的每一个数据集名后面加一个括号,里面写上语句的每一个数据集名后面加一个括号,里面写上in=in=变量名,变量名所给的变量名,变量名所给的变量取变量取1 1表示观测来自此数据集,取表示观测来自此数

35、据集,取0 0表示观测非来自此数据集。例如,在前面的例子中我表示观测非来自此数据集。例如,在前面的例子中我们把们把score score 数据集按男、女拆分成了数据集按男、女拆分成了scoremscorem和和scorefscoref两个数据集并抛弃了性别变量,就可两个数据集并抛弃了性别变量,就可以用如下程序连接两个数据集并恢复性别信息:以用如下程序连接两个数据集并恢复性别信息:data new;data new;set scorem(in=male)scoref(in=female);set scorem(in=male)scoref(in=female);if male=1 then se

36、x=if male=1 then sex=男男;if female=1 then sex=if female=1 then sex=女女;run;run;在数据步中,如果观测来自在数据步中,如果观测来自scoremscorem,则变量,则变量malemale值为值为1 1,如果观测来自,如果观测来自scorefscoref则则变量变量female female 值为值为1 1,可以使用这两个变量的值定义新变量,可以使用这两个变量的值定义新变量sexsex。用数据集选项的。用数据集选项的in=in=指指定的变量不能直接进入结果数据集而只能用于数据步程序中。定的变量不能直接进入结果数据集而只能用于

37、数据步程序中。上一页下一页返回本节首页第36页,本讲稿共45页(五五)数据集的横向合数据集的横向合并并 两个(或多个)数据集如果包含了同样的一些观测的两个(或多个)数据集如果包含了同样的一些观测的不同属性(变量),比如,数据集不同属性(变量),比如,数据集scorexsscorexs包含学生的姓包含学生的姓名、性别,数据集名、性别,数据集scoresxscoresx包含学生的数学成绩,数据集包含学生的数学成绩,数据集scoreywscoreyw包含学生的语文成绩,数据集包含学生的语文成绩,数据集scoreyyscoreyy包含学生的包含学生的英语成绩且各数据集的观测是按顺序一一对应的,就可以英

38、语成绩且各数据集的观测是按顺序一一对应的,就可以用如下带有用如下带有MERGEMERGE语句的数据步把它们左右横向合并到一语句的数据步把它们左右横向合并到一个数据集个数据集NEWNEW:data new;data new;merge scorexs scoreyw scoresx;merge scorexs scoreyw scoresx;run;run;上一页下一页返回本节首页第37页,本讲稿共45页 横向合并一般应该采用按关键字合并的办法,横向合并一般应该采用按关键字合并的办法,即先把每个数据集按照相同的、能唯一区分各观即先把每个数据集按照相同的、能唯一区分各观测的一个(或几个)变量排序,

39、然后用测的一个(或几个)变量排序,然后用BYBY语句和语句和MERGEMERGE语句联合使用,这样即使原来观测顺序不语句联合使用,这样即使原来观测顺序不一致也可以保证横向合并的结果没有错。下例先一致也可以保证横向合并的结果没有错。下例先把把scorescore数据集横向拆分为包含姓名、性别的数数据集横向拆分为包含姓名、性别的数据集据集scorexsscorexs和包含姓名、数学成绩、语文成绩和包含姓名、数学成绩、语文成绩和英语成绩的数据集和英语成绩的数据集scoresyy scoresyy,然后按关键字,然后按关键字横向合并:横向合并:上一页下一页返回本节首页第38页,本讲稿共45页data

40、scorexs;data scorexs;set score;set score;keep name sex;keep name sex;run;run;data scoresyy;data scoresyy;set score;set score;keep name math chinese english;keep name math chinese english;run;run;proc sort data=scorexs;proc sort data=scorexs;by name;by name;run;run;proc sort data=scoresyy;proc sort d

41、ata=scoresyy;by name;by name;run;run;data new;data new;merge scorexs scoresyy;merge scorexs scoresyy;by name;by name;run;run;proc print;run;proc print;run;上一页下一页返回本节首页第39页,本讲稿共45页(六六)用用UPDATEUPDATE语句更新数据集语句更新数据集 如果我们发现数据集中的某些数据值有错误或者现在的值如果我们发现数据集中的某些数据值有错误或者现在的值已经改变了,我们可以从更正了的原始数据重新生成数据集,已经改变了,我们可以从

42、更正了的原始数据重新生成数据集,或者使用更有效的方法,即建立一个只包含新数据值的数据集,或者使用更有效的方法,即建立一个只包含新数据值的数据集,用此数据集修改原数据集。使用如下的用此数据集修改原数据集。使用如下的DATADATA步中可以实现数据步中可以实现数据集的更新:集的更新:DATA DATA 新数据集名新数据集名;UPDATE UPDATE 原数据集原数据集 更新用数据集更新用数据集;BY BY 关键变量关键变量;RUN;RUN;上一页下一页返回本节首页第40页,本讲稿共45页 例如,比如我们发现数据集例如,比如我们发现数据集scorescore中王思明的语文成绩实际应中王思明的语文成绩

43、实际应该是该是9191分,张红艺性别应为男,可以先生成如下的只包含更正数分,张红艺性别应为男,可以先生成如下的只包含更正数据值的数据集,不需要改的观测不列入,不需要改的变量不列入据值的数据集,不需要改的观测不列入,不需要改的变量不列入或取缺失值:或取缺失值:data upd;data upd;input name$sex$english;input name$sex$english;cards;cards;王思明王思明 男男.张红艺张红艺.110.110;run;run;第41页,本讲稿共45页 然后,把原数据集然后,把原数据集scorescore和更新用数据集和更新用数据集UPDUPD均按姓

44、名均按姓名(NAMENAME)排序:)排序:proc sort data=score;proc sort data=score;by name;by name;run;run;proc sort data=upd;proc sort data=upd;by name;by name;run;run;第42页,本讲稿共45页 最后用最后用UPDATEUPDATE和和BYBY更新得到新数据集更新得到新数据集NEWNEW,其中王思明的性,其中王思明的性别改成了男,张红艺英语成绩改成了别改成了男,张红艺英语成绩改成了110110分。分。data new;data new;update score up

45、d;update score upd;by name;by name;run;run;proc print;proc print;run;run;第43页,本讲稿共45页 但是,这个新数据集中有一个错误:王思明的语文成绩但是,这个新数据集中有一个错误:王思明的语文成绩修改以后他的平均分也应作相应改动。所以此例应改为:修改以后他的平均分也应作相应改动。所以此例应改为:data new;data new;update score upd(in=in_upd);update score upd(in=in_upd);if in_upd=1 then if in_upd=1 then avg=math

46、*0.5+chinese/120*100*0.5;avg=math*0.5+chinese/120*100*0.5;by name;by name;run;run;proc print;run;proc print;run;上一页下一页返回本节首页第44页,本讲稿共45页1.1.以以scorescore数据为基础,分别生成以数据为基础,分别生成以score_1,score_2,score_3,score_4score_1,score_2,score_3,score_4,score_xxscore_xx,score_cjscore_cj命名的命名的6 6个新数据集。其中个新数据集。其中:scor

47、e_1score_1中的数据全部来自中的数据全部来自scorescore数据集中数据集中1 1班的学生,并丢弃班的学生,并丢弃classclass变量;变量;score_2score_2中的数据全部来自中的数据全部来自scorescore数据集中数据集中2 2班的学生,并丢弃班的学生,并丢弃classclass变量;变量;score_3score_3中的数据全部来自中的数据全部来自scorescore数据集中数据集中3 3班的学生,并丢弃班的学生,并丢弃classclass变量;变量;score_4score_4中的数据全部来自中的数据全部来自scorescore数据集中数据集中4 4班的学生

48、,并丢弃班的学生,并丢弃classclass变量;变量;score_xxscore_xx中的数据全部来自中的数据全部来自scorescore数据集中的数据集中的namename、sexsex、ageage、weightweight、heightheight和和classclass六个变六个变量的数据;量的数据;score_cjscore_cj中的数据全部来自中的数据全部来自scorescore数据集中的数据集中的mathmath、chinesechinese和和englishenglish三个变量的数据;三个变量的数据;2.2.将将score_1,score_2,score_3,score_4score_1,score_2,score_3,score_4纵向合并生成新的数据集纵向合并生成新的数据集score_zxhb,score_zxhb,并加入新的变量并加入新的变量classclass,保存班级值(,保存班级值(1 14 4););3.3.将将score_xxscore_xx,score_cjscore_cj横向合并生成新的数据集横向合并生成新的数据集score_hxhbscore_hxhb。【思考与练习】【思考与练习】第45页,本讲稿共45页

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

当前位置:首页 > 生活休闲 > 资格考试

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁