SAS转置实例剖析_第1页
SAS转置实例剖析_第2页
SAS转置实例剖析_第3页
SAS转置实例剖析_第4页
SAS转置实例剖析_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、snosex数据集转置一、数据集的转置TRANSPOSE过程把一个数据集进行转置, 使得观测值和变量的位置互换,即读入源数据集产生一个新的数据集,新的数据集的行是原来的列,新数据集的列是原来的行。1.语法:PROC TRANSPOSE DATA=源数据集 OUT=新数据集;VAR变量;需要转置的变量ID变量;变量的取值成为转置后的变量名By 变量;分组变量,不转置2. 一个例子data stude nt;in put sno n ame $ sex $ math chin ese; datali nes;1李明男92982王思明男86903张聪男981094刘颍女801105张红艺女89106

2、Run;r.VIEfTABLE: fork.Studentproc transpose data=student out=studenttrans1; run;-1 L TlHITABLli: fork. Studenttransl1以前的翅名COLIC0I2C0L3C0L4I LEL41234TI 2malh928690ao391duii电罪的90109J10106proc transpose data=student out=studenttrans; var math chinese;by sno name sex;run;或者proc transpose data=student ou

3、t=studenttrans;by sno name sex;run;H* VIEtlABLE: Tnrk. StudenHranssnonameC0L1112 2 3 3445明明思恩聪聪 李李王王张张ITJ1m -Chinese 血生th chinese ffi&thChinese张红茗张红艺matli chineseChinese9266di.i9S109COHU9106VAR变量:列出要转置的变量;如果没有VAR语句,则源数据集中的在其他语句中没有列出的数值变量都要转置,如果字符变量要转置,则需要在VAR中列出。没有转置的变量不进入新的数据集中,除非在 BY(或COPY )语句中列出。

4、BY变量:实现分组转置,分组变量被包含在输出数据集中,但是不被转置,BY变量需要排序。proc transpose data=studenttrans out=studenttrans2; id _name_;by sno name sex;run;;r.VIEfTABLE: fork. Student!rans2i=b.(Iskqnane脯的翅名Chinese*11李明LI929822壬思明男COLL86加33耕男CULL98109q4蜩血13011055 m口:89iacID语句使得ID变量的格式化值成为新数据集中转置的变量名,ID变量的格式化值不能有重复。如有重复,不能正确运行。3其它例

5、子举例:将单选题数据集single转置成如下格式。data sin gle;in put seria Inoquesti on an swer;datali nes;1000 111000 211000 321001 121001 221001 311002 331002 211003 131003 341004 325Run;Ocs serialnoque;tior0 1-234 o o -u o -u -u o -u ooguestion22 13 42PROC SORT DATA=single;BY seria lno;PROC TRANSPOSE DATA=singleout =sin

6、glel;BY seria lno;ID question;VAR an swer;run ;PROC PRINT DATA=single1;RUN;PROC TRANSPOSE DATA=single out =single1(DROP= _NAME_);BY seria lno;ID question;VAR an swer;run ;Obs serialno2223450 12 3 40-0000 o o o o o2 13 4 2改进代码:PROC TRANSPOSE DATA=single out =single1(DR0P= _NAME_) BY seria lno;PREFIX=

7、questionID question;VAR an swer;run举例:将多选题数据集(multiple。.ser ialno _4anserI _4answer2 _4answer31 10001232 10D1”3 1002”34 呗+,5 1004+DATA语句)转置成如下图所示:_5arswerl _5arts帕r2 _4answer4 _CarswerI _6ftnEer2 _6arisi?er312124B1T2ir2423-44-1I转置参考代码:DATA multiple;SET multipleO;ques_a ns= compress(|questi on |a nsw

8、e广|a nswer);RUN;PROC PRINT ;RUN;PROC TRANSPOSE DATA=multipleOUT=multiple1(drop=_name label_);BY seria lno ;ID ques_ans;VAR an swer;RUN;PROC PRINT ;RUN;练习:现收集到两种鱼(Cur和Men)的长度和重量标本,在数据的收集过程中,采用一次输入日 期和种类,然后同一行上给出该次收集到样本的观测值,然而,需要2个数据集,一个是对每个长度值包含独立的观测值,另一个对每个重量值包含独立的观测值,每个数据集中需要包含每个长度或重量观测的分组、种类、日期。Ob

9、sQRCUFDATE SPECIESW2LW3412311102JUN64 CUR D2JUN84 CUR 02JJNS4 CUR 11JUL84 MEN 14JULS4 MEN 13AUG64 MEN1 Q 2 2 9 63337785050002230100004472622833338780550003425s 400053523300933378B5 50000 223086 fi! r o o o 4 & 7-94-07 7soo 4 3 4o 5- o oo33 冬Q9DbgSPECIESBATE GRDUP _NAMOLcS810111213M15161?101920?1222S

10、24R-HRRRRRRRRRRNNNNNNNNNNNN OJclJclJclJaJclJclJcuaJclJcucuME怔MEMEME怔MEMtME怔MEMEO2JLN04 02JUNB4 ojunei O?JL*IS4 02JIAI84 O2JUU04 02JUNB4 QM卿冏 O?JUW04 O2JUN01 02JUNB411JULS41 UU-04 IIJUL94 11JUL64 14JUL84 14JUL04 14JUL94 14JUL84 13AUG94 1SAUG04 I3AUC94 13AUG84LIL2L3L4LIL2L3L4LIL2L3L4LIL2L3L4LIL2LSL4LI

11、L2L3L4313232333036般冊3232般 +728270再肝788D74沙囲肘即CbsCAIL GROUP _NE_L;u8310111213IJ151G17G19?011 冋 ?324cucucucucucucucucucucucu怔旺旺HE惦莊旺hEhENENE怔C2JUN34 02JUW4 02JUW4 02JUtt 02JUMS4 );Jh;A 02 JU 丽 4 0ZJUN84 0ZJUW4 O2JUN04 02JUN34 O2JUM84 I UULU I1JULS4 I1JULS4 IlJUUi 14JUL94 UJUL94 14JUL84 14JUU84 13MJG84

12、 I3MJG84 13AUG84 13MJCS4wI世闊恥wIW2W3W4WIW2悄 MWIW2惜皿wIW2W3MWIW2淵射SO5-005555 5 0 OOO-OOOOOOMOO 23232423323 -050318060469 V + + + + + +OOOQ-QOOOQOO 454443337574数据集转置本文链接:/view.asp?id=52一、正向转置 比如有如下数据集eroupval11aal21bbl32aa?斗2bb253a63bb3希望变换为如下数据集NAMEab1valalbl22valb233val13b3使用以下sas语句:p

13、roc sort data = tempi; by id; run;proc tran spose data = tempi out = temp2;var val;id group;by id;run;其中var指定希望转置的变量,id指定将哪个变量里的观测转换为变量,by指 定分组的变量。在调用transpose之前,要对by的变量进行排序。转置后数据集里的_NAME是 之前的变量名。二、逆向转置 比如有如下数据集idrb11:ilbl22b233b3希望转置为:使用以下sas语句:proc sort data = temp1; by id; run;proc tran spose data = temp1 out = temp2; var a b;by id;run;var指定需要转置为一列的两个变量,by指定分组。C0L1是自动生成的变量, 存放原先a和b的观测。三、多行多列

温馨提示

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

评论

0/150

提交评论