SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 684|回复: 2
打印 上一主题 下一主题

求助---长表转宽表的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-11-23 11:32:42 | 只看该作者

求助---长表转宽表的问题

我有一张表格式如下:
id,prod
1000,11
1000,13
1000,34
1001,11
1001,23
……
已知该表中一个id最多有10条记录,现在希望按照id和prod升序排列后把上表转化成下表格式:
id,prod1,prod2,prod3,prod4,……prod9,prod10
1000,11,13,34
1001,11,23
……

请教各位有什么比较高效的算法,长表记录数2000多万条,我在笔记本电脑上运算:(

多谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-11-23 15:27:57 | 只看该作者

Solution to your problem!!

data one;
input id $ prod @@;
cards;
1000         11
1000         13
1000         34
1000        16
1000        43
1000        24
1000        64
1001        34
1001        54
1001        34
1001        32
1001         11
1001         23
1002        16
1002        22
1002        24
1002        23
1002        34
1002        43
1002        34
1002        24
1003        16
1003        22
1003        24
1003        23
1003        34
1003        43
1003        34
1003        24
1003        66
1003        765
1004        16
1004        22
1004        24
1005        16
1005        22
1005        24
1005        23
1005        34
1005        43
1005        34
1005        24
1005        66
1005        765
;
proc transpose out=two (drop=_Name_) prefix=prod;
by id;
var prod;
proc print;
run;


建议:先用EXCELl输入数据,然后将其拷贝过来即可。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-11-23 16:17:21 | 只看该作者

再问一个问题

谢谢homestay
早就听说过transpose功能很强大,可惜一直没去用它,可惜。

再变换一下,看看这个问题如何解决?
原数据:
id,prod,fee
1000,12,23.3
1000,13,34.5
1001,13,45.6
1001,23,36.8
……
希望转换为:
id,prod_12,prod_12_fee,prod_13,prod_13_fee,prod_23,prod_23_fee……
1000,1,23.3,1,34.5,0,0……
1001,0,0,1,45.6,1,36.8……
……
其中prod_12取值0/1,表示该id是否有prod 取值为12的纪录,prod_12_fee则代表prod取值为12对应的fee取值。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 12:54 , Processed in 0.069354 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表