SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 911|回复: 5
打印 上一主题 下一主题

数据集结转处理

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-10-15 13:26:57 | 只看该作者

数据集结转处理

现有数据集X,形式如下
a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3
1   2   3   1   2   2  3   4  2   6   5   8

现在要把数据集x变成如下的样子
a b c d
1 2 3 1
2 2 3 4
2 6 5 8

请问各位大侠应该如何编程?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-10-15 13:39:56 | 只看该作者

Re: 数据集结转处理

data have;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;

data wanted(keep= a b c d);
    set have ;
    array aa (3) a1-a3;
        array bb (3) b1-b3;
        array cc (3) c1-c3;
        array dd  (3) d1-d3;
        do i=1 to 3;
            a=aa(i); b=bb(i); c=cc(i); d=dd(i);
                output;
        end;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-10-15 13:44:27 | 只看该作者

Re: 数据集结转处理

[code:3sx6b3w7]data raw;
    input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
datalines;
1 2 3 1 2 2 3 4 2 6 5 8
11 12 13 11 12 12 13 14 12 16 15 18
;
data out;
    set raw;
    array temp(3,4) _numeric_;
    array out(4) a b c d;
    do i=1 to dim1(temp);
        do j=1 to dim2(temp);
            out(j)=temp(i,j);
        end;
        output;
    end;
    keep a b c d;
run;[/code:3sx6b3w7]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2010-10-15 13:44:47 | 只看该作者

Re: 数据集结转处理

data have;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;

proc transpose data=have out=aaa;
run;

data aaa;
     set aaa;
         group=substr(_name_,2);
         name=substr(_name_,1,1);
run;

proc transpose data=aaa out=wanted(drop=group _name_);
     by group;
         id name;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2010-10-15 21:49:00 | 只看该作者

Re: 数据集结转处理

[code:1e8jkwam]
data a;
input a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3;
cards;
1 2 3 1 2 2 3 4 2 6 5 8
;
run;
proc iml;
        use a;
        read all var _num_ into A;
        close a;
        B=shape(A,3,4);
        create  result from B[colname={'a' 'b' 'c' 'd'}];
        append from B;
quit;

[/code:1e8jkwam]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2010-10-21 20:40:31 | 只看该作者

Re: 数据集结转处理

[color=#4000FF:3ibqnam5]留个记号,说不定哪天能用得到[/color:3ibqnam5]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-3 23:36 , Processed in 0.070395 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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