SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

行列转换

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-11-24 14:50:31 | 只看该作者

行列转换

已存在一数据集tmp,有三个变量 a b c,需要变为当a相同时,对应的b c的数据列转行,放在一行中。
a b c
1 4 6
1 5 5
2 5 2
2 6 8
3 1 7
3 5 6
现在需要变成
a m n x y
1 4 5 6 4
2 5 6 2 8
3 1 5 7 6
应该如何编程?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-11-24 17:10:32 | 只看该作者

Re: 行列转换

[code:zm4glkku]data a;
input a b c;
cards;
1 4 6
1 5 5
2 5 2
2 6 8
3 1 7
3 5 6
;
proc transpose data=a out=b;
var b c;
by a;
run;
data c(rename=(col1=m co2=n))  d(rename=(col1=x col2=y));
set b;
if _name_='b' then output c ;
if _name_='c' then output d ;
run;
data e;
merge c d;
by a;
drop _name_;
run;[/code:zm4glkku]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-11-24 17:40:04 | 只看该作者

Re: 行列转换

Caution: 仅适用于示例数据
[code:1zh7x6yn]data a;
input a b c;
cards;
1 4 6
1 5 5
2 5 2
2 6 8
3 1 7
3 5 6
;

data b;
        retain a m b x c;
        set a;
        by a;
        if first.a then do; m=b; x=c; end;
        else output;
        rename b=n c=y;
run;[/code:1zh7x6yn]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-6 04:36 , Processed in 0.067384 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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