《系统和数据分析PROCTRANSPOSE转置数据集计算机数据挖掘与模式识别_计算机-数据挖掘与模式识别.pdf》由会员分享,可在线阅读,更多相关《系统和数据分析PROCTRANSPOSE转置数据集计算机数据挖掘与模式识别_计算机-数据挖掘与模式识别.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第十三课 PROC TRANSPOSE 转置数据 集 一、转置数据集的概念 在对数据库的操作中,有时需要把数据库的行和列进行交换,也可称转置。SAS 系统中 TRANSPOSE 过程能完成对 SAS 数据集的转置,即把观测(行)变为变量(列),变量变为 观测。该过程从读入的一个数据集中创建一个新的数据集。新数据集中包含三类变量:一是由输入数据集中的观测转置后创建的新变量,又称转置变量,如 _NAME_ 、COL1、COL2、COL3 二是从输入数据集中拷贝过来的变量,使用 COPY 语句定义这个变量,新数据集中 COPY 过来的变量与输入数据集中的变量具有相同的名字和值 三是为了识别新数据集
2、中每条观测的来源用建的新变量 ID 语句定义的变量值作为新数据集创 二、使用 PROC TRANSPOSE 过程转置数据集 1.用于 TRANSPOSE 过程的常用语句 Proc Transpose ;Var 变量列表;Id 变量;Copy 变量列表;Run;2.转置 CLASS 数据集 例如,在 CLASS 数据集中有变量 NAME、TEST1、TEST2 和 TEST3,是按每个学生各课程成绩作为一条观测来组织的,现在我们要创建一个按每门课程各个学生的考试成绩作为一条观测的新数据集 NEWCLASS。程序如下:Proc Transpose Data=CLASS Out=NEWCLASS ;
3、Var TEST1 TEST2 TEST3;Run;转置生成的新数据集 NEWCLASS 的结果如图 13.1 所示。图 13.1 由 CLASS 转置生成的新数据集 NEWCLASS 3.设定新数据集中的转置变量名 新数据集中的转置变量名是可以由用户自己设定的。通过 PROC TRANSPOSE 语句的选项 NAME=COURSE ,修改了省缺的新变量名 _NAME_ 为 COURSE 还可以通过选项 PREFIX=NO,修改了省缺的新变量名 COL1、COL2、COL3 COL4、COL5 为 NO1、NO2、NO3、NO4、NO5 如果新变量名 COL1、COL2、COL3、COL4、C
4、OL5 想用输入数据集 CLASS NAME 变量中的对应值来替代,使用 ID 命令定义 NAME 即可。这样命名新变量 、中 的优点是通过新变量名就可以很容易地识别原数据集中的观察行修改程序如下:Proc Transpose Data=CLASS Out=NEWCLASS Name=COURSE;Var TEST1 TEST2 TEST3;Id Name;Run;转置生成的新数据集 NEWCLASS 的结果如图 13.2 所示。程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据集中的观测转置后创建的新变量又称转置变量
5、如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数据集中的转置变量名通过语句的选项修改了省缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为 图 13.2 使用 ID 语句转置生成的新数据集 NEWCLASS 第十四课 另外,还可以在 PROC TRANSPOSE 过程中使用 COPY 语句,在语句
6、中指定输入数据集的某一个(或某几个)变量,将直接把输入数据集中指定变量那一列拷贝到新数据集也成为一列。当然,这样操作常会产生输出数据集的行和 列数不匹配,用缺失值填满。使用 FSVIEW 过程编辑数据集 我们前面主要用 SAS 的程序方法来编辑 SAS 数据集。实际上,很多用户习惯使用 SAS/FSP 软件的 FSVIEW 过程来编辑 SAS 数据集,这是一种交互式菜单编辑方式,非常方便。例如,在 PROGRAM EDITOR 窗口中输入的程序如下:Proc fsviewdata=study.survey;Run;程序提交后,进入 FSVIEW 窗口。用户仍然可以在命令框中键入命令来编辑,如键
7、入 DROP 命令去掉不需要显示的变量(投影操作)、WHERE 命令获得子集(选择操作)及 WHERE ALSO 命令获得子集的子集。FSVIEW 过程与 FSEDIT 过程相比,FSVIEW 过程更方便,是用 户最常用的输入和编辑 SAS 数据集的过程。因为 FSVIEW 在每一屏显示尽可能多的观测,是 一种屏编辑;而 FSEDIT 在每一屏只显示一条观测,是一种行编辑。我们在这里以编辑数据集 STUDY.SURVEY.DA TA 为例,简单介绍几种最常用的编辑操作。程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据
8、集中的观测转置后创建的新变量又称转置变量如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数据集中的转置变量名通过语句的选项修改了省缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为 一、选 择 Edit/Update/Record 命 令 编 辑 记 录 如果选择了 Edit/Update/Meme
9、r 命令,则按数据集的一个个数据项进行编辑,每按一个 Enter 编辑光标跳到下一个数据项。如果选择了 Edit/Update/Record 命令,则按数据集的一条 条记录进行编辑,每按一个 Enter 编辑光标跳到下一条记录。如图 14.3 所示是 FSVIEW 屏编 辑窗口。图 14.3 FSVIEW 屏编辑窗口 1.修改指定记录 进入按记录编辑状态后,只要单击一下所要编辑记录的行中任意位置,就会出现高反差的编辑条,移动左右光标到行中某处即可修改。要注意的是,窗口中显示的是数据集的输出格式,我们在输入或修改时,一定要按输入格式进行输入,否则可能发生错误。2.删除指定记录 按上下光标或 Pa
10、ge Up/Page Down 键可上下移动编辑光标,移到指定行后再按 Enter 键,程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据集中的观测转置后创建的新变量又称转置变量如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数据集中的转置变量名通过语句的选项修改了省
11、缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为 也会出现高反差的编辑条,只有在出现编辑条时再按工具栏上的 Delete 按钮,才能删除此记录行。另外一种方法是,选择 Edit/Delete 命令后,再输入需要删除记录的 OBS 编号。需要注 意,OBS 编号是记录输入的顺序号,而不是当前记录的逻辑顺序编号。记录输入的顺序号可能不连续,原因是断缺号码的输入记录已经被删除了。3.新增一条记录 如果需要新增记录,选择 Edit/Autoadd 命令,将新增一条空白记录,然后在空白记录上输入,按 Enter 键将继续新增空白记录。Edit/Autoadd
12、 是一个开关命令,再次选择此命令将关掉新增记录状态。4.选择 View/Arrange variables/Drop 命令去掉变量的显示 如果要去掉不需要显示的变量,例如 AGE 变量,选择将出现如图 14.4 所示的输入框,空白框中输入数据集变量名 View/Arrange variables/Drop AGE,单击 OK 即可。命令后 二、选 择 View/Rename 命 令 更改 变 量 的 名 称 如果要更改变量的名称,例如将 NAME 变量名更改为 ID_NAME。选择 View/Rename 命令后将出现见图 14.5 所示输入框,输入被改的变量名 NAME 和改为的变量名 ID
13、_NAME。单击 OK 改名任务完成。图 14.4 去掉 AGE 变量 图 14.5 更改 NAME 变量名为 ID_NAME 程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据集中的观测转置后创建的新变量又称转置变量如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数
14、据集中的转置变量名通过语句的选项修改了省缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为 三、选 择 View/Assign formats/Format 命 令 重 新定义变量的输出格式 STUDY.SURVEY 数据集在初始创建时,我们只考虑了输入格式,现在在屏幕的窗口中显 示的数据格式是一种系统默认的输出格式,可能不符合用户的要求,例如 BDA TE 出生年日 期变量,显示的是 SAS 系统内部的日期存储值,我们将它改成 MMDDYY8.日期输出格式。选择 View/Assign formats/Format 命令后将出现如图 14.6 所示
15、输入框,在 Enter name of format 输入框中输入输出格式 MMDDYY8.,在 Enter name of variable(s)to format 输入框中输入需改 变输出格式的变量名 BDA TE。单击 OK 修改完成。图 14.6 更改 BDA TE 变量的输出格式 四、选 择 Locals/Define formula 命 令 新 增 显示 变 量 假设我们要对 STUDY.SURVEY 数据集新增一个 TAX 显示变量,它的值可由本条观测的 其他字段变量中的值经过一定的运算求得,例如 TAX=INCOME*10%。选择 Locals/Define formula 车
16、,在 命令后就会出现如图 14.7 所示的定义新变量的窗口,在 Name 中输入新变量 Enter the formula below 的下面立即出现 TAX=,在 Type 中有数字 NUMERIC TAX 回 和字符 CHARACTER 两个选项,我们选择数字型变量,定义数据输出格式为 9.2,最后输入变量 TAX 的赋值公式为 INCOME*0.1 。单击 OK 完成。今后新增一条记录输入时,只要在 INCOME 变量中输入数值,TAX 变量就会自动出现计 算值。要特别注意的是,去掉已有变量的显示(AGE)和新增显示变量(TAX)都是指在目前 的窗口显示状态,如果我们选择 File/En
17、d 命令退出 FSVIEW 后,再次进入,TAX 变量并不存 在,而 AGE 变量却显示。确是要在数据集中新增 TAX 变量,应选择 File/Save as/Save data set as 命令保存退出。程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据集中的观测转置后创建的新变量又称转置变量如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是
18、按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数据集中的转置变量名通过语句的选项修改了省缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为 图 14.7 新增一个 TAX 数字变量,可由表达式赋值 程能完成对数据集的转置即把观测行变为变量列观测该过程从读入的一个数据集中创建一个新的数据集新数据集中包含三类变量一是由输入数据集中的观测转置后创建的新变量又称转置变量如系统中变量变为二是从输入数据集中拷识别新数据集中每条观测的来源用语句定义的变量值作为新数据集创建的新变量二使用过程转置数据集用于过程的常用语句输入数据集转置数据集选项列表变量列表变量变量列表转置数据集例如在数据集中有变量和是按每个学生各序如下转置生成的新数据集的结果如图所示图由转置生成的新数据集设定新数据集中的转置变量名通过语句的选项修改了省缺的新变量名新数据集中的转置变量名是可以由用户自己设定的为还可以通过选项修改了省缺的新变量名为