加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SAS利用data步实现数据集的行列互换

(2013-01-28 10:44:18)
标签:

杂谈

分类: SAS编程及应用

http://s16/mw690/9d0b00a4gd450ca331fdf&690

一: 如果要把列转成行,则DO循环独立于set语句,同时使用output语句.保证程序每读入一条观测,通过DO循环和output 语句输出多条观测。

二: 如果需要把行转成列,则DO循环包含set语句,同时不使用output语句,程序在DO循环中把循环次数对应读入的观测条数值赋值给不同的列变量,最后通过run语句输出。

例如:

Location Date Length1 Weight1 Length2 Weight2 Length3 Weight3 Length4 Weight4
Cole Pond 2-Jun-95 31 0.25 32 0.3 32 0.25 33 0.3
Cole Pond 3-Jul-95 33 0.32 34 0.41 37 0.48 32 0.28
Cole Pond 4-Aug-95 29 0.23 30 0.25 34 0.47 32 0.3
Eagle Lake 2-Jun-95 32 0.35 32 0.25 33 0.3 . .
Eagle Lake 3-Jul-95 30 0.2 36 0.45 . . . .
Eagle Lake 4-Aug-95 33 0.3 33 0.28 34 0.42 . .

该数据集为fishdata.是科尔池塘和鹰湖中鱼的长度和重量数据。

程序如下:

http://s14/mw690/9d0b00a4gd450cb51ea6d&690

http://s15/mw690/9d0b00a4gd450cb694f9e&690

 

备注: 在商业实践中,应当避免使用transpose 过程,特别是在大数据集的情况下,transpose过程会非常耗时间。而transpose本质上是在程序后台运行的data步,所以完全可以用自已开发的data步代码取而代之,相对于transpose,data步的运行速度会非常快。

 

 

 

                                                                      参考:数据挖掘(姚志勇)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有