注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

公卫人

博学而笃志 切问而近思

 
 
 

日志

 
 

[Base SAS] SAS中数据的转置:PROC TRANSPOSE过程  

2016-03-08 22:48:02|  分类: 统计分析 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


  
TRANSPOSE过程的格式如下所示:
PROC TRANSPOSE <DATA=input-data-set>< LET>< NAME=name>< OUT=output-data-set>< PREFIX=prefix>;
  BY< DESCENDING> variable-1< ...<DESCENDING> variable-n>< NOTSORTED>;  
  COPY variable(s);  
  ID variable;  
  IDLABEL variable;  
  VAR variable(s);
在PROC TRANSPOSE语句中可能出现的选择项有:
1)DATA=数据集名,用来说明要转置的数据集名,如果省略这一选择,则指定最新建立的数据集。
2)OUT=数据集名,用来说明转置所建立的新数据集名,如果省略这一选择,SAS将按内部程式给出新的数据集名。
3)LET 当ID出现重复时,那么只选用最后一条
4)NAME=字母   为含有输入数据集中被转置的变量名的输出数据集中的变量命名,如果省略这一选择,SAS将按内部程式指定为_NAME_。
5)PREFIX=字母(指定一个前缀,用来构成新变量名)。
BY语句 使输入数据集分组转置,分组变量被包括在输出数据集中。 
COPY语句 将变量复制到新的数据集中。
ID语句 用来指定转置后的变量名
IDLABEL语句 为转置后的变量名添加标签
VAR语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在VAR语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已列入COPY或BY语句。

示例1:
data score;
   input Student $9. +1 StudentID $ Section $ Test1 Test2 Final;
   datalines;
Capalleti 0545 1  94 91 87
Dubose    1252 2  51 65 91
Engles    1167 1  95 97 97
Grant     1230 2  63 75 80
Krupski   2527 2  80 76 71
Lundsford 4860 1  92 40 86
McBane    0674 1  75 78 72
;

proc transpose data=score out=idlabel name=Test prefix=sn;
   id studentid;
   idlabel student;
run;

proc print data=idlabel label noobs;
   title 'Student Test Scores';
run;

输出OUTPUT:
----------------------------------------------------
以前的变量名   Capalleti   Dubose   Engles   Grant   Krupski   Lundsford    McBane
   Test1           94        51       95       63       80         92       75
   Test2           91        65       97       75       76         40       78
   Final           87        91       97       80       71         86       72

示例2:
data sale;
input salerid foodid money foodname $;
cards;
1 1 100 egg
1 2 300 cake
1 3 400 apple
2 2 230 cake
2 3 444 apple
2 4 540 pear
3 1 123 egg
3 2 120 cake
3 3 200 apple
3 4 500 pear
;
run;
proc transpose data=sale out=saleout name=Saler prefix=Food;
   id foodid;
   idlabel foodname;
   by salerid;
run;
proc print data=saleout label noobs;
run;
输出OUTPUT:
----------------------------------------------------
salerid    以前的变量名    egg    cake    apple    pear
            money        100     300     400        .
            money             230     444      540
            money        123     120     200      500
  评论这张
 
阅读(232)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017