SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1264|回复: 9
打印 上一主题 下一主题

求助:数据分列?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-12-30 10:42:58 | 只看该作者

求助:数据分列?

求助:数据分列?
一数据集,里面的观测无规律。
data a ;
input x1-x5;
cards;
1 10 11 12 18
1 9 15 16 18
2 3 8 10 12
2 4 9 20 21
2 5 10 13 15
3 6 9 12 13
6 8 9 19 20
;
run;

求助:怎样能将这些观测按照相同的数字分列?
即:将1排成一列、将2排成一列。。。一直到最大的数字。

谢谢!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-12-30 11:12:26 | 只看该作者

Re: 求助:数据分列?

Does this work for you?

[code:m9c0s55y]data a ;
  input x1-x5;
cards;
1 10 11 12 18
1 9 15 16 18
2 3 8 10 12
2 4 9 20 21
2 5 10 13 15
3 6 9 12 13
6 8 9 19 20
;
run;

proc sql;
  create table b as
    select x1 as x
      from a

    union all

    select x2 as x
      from a

    union all

    select x3 as x
      from a

    union all

    select x4 as x
      from a

    union all

    select x5 as x
      from a

    order by x;
quit;

proc transpose data = b
               out = c(drop = _name_);
  var x;
  by x;
run;

proc transpose data = c
               out = results(drop = _name_) prefix = Col;
  var col:;
  id x;
run;
[/code:m9c0s55y]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-12-30 12:31:43 | 只看该作者

Re: 求助:数据分列?

[code:3pjygjpk]data a ;
input x1-x5;
cards;
1 10 11 12 18
1 9 15 16 18
2 3 8 10 12
2 4 9 20 21
2 5 10 13 15
3 6 9 12 13
6 8 9 19 20
;
run;

data final(keep=arr1-arr21);
    set a;
    array arr(1:21);
    array arrx x1-x5;
    do i=1 to 5;
    arr(arrx(i))=arrx(i);
    end;
run;[/code:3pjygjpk]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-12-30 12:46:56 | 只看该作者

Re: 求助:数据分列?

to ahuige

This is beautiful!  <!-- s8) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8)" title="Cool" /><!-- s8) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-12-30 13:09:49 | 只看该作者

Re: 求助:数据分列?

斑竹总是很节俭,不肯多写一个字,上次是n+last.var;这次是arr(arrx(i))=arrx(i);
要都这样,还怎么拉动内需呀?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-12-30 14:04:29 | 只看该作者

Re: 求助:数据分列?

to hopewell

领会哥本哈根会议精神 拥抱低碳生活
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-12-30 14:57:09 | 只看该作者

Re: 求助:数据分列?

谢谢各位大侠的指教!!
这就是想要的格式。 又学了一种分列的方法,精炼!!

不知还有没有其他方法?
上面只是举了一个列子,我的数据集的观测很多,没规律,不知道各观察的大小界限。如:
data a ;
input x1-x5;
cards;
1101 1102 1115 1220 1359
1101 1219 1415 1613 1818
122 1115 1818 5610 6201
1101 1102 1219 1359 1613
18 1110 1220 3348 1507
;
run;

请教有没有办法?

谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-12-30 18:31:06 | 只看该作者

Re: 求助:数据分列?

转换后的变量不连续也不按顺序成吗? 来个高污染,高耗能的...
[code:1ar03mdf]data a ;
        input x1-x5;
        obs=_n_;
cards;
1101 1102 1115 1220 1359
1101 1219 1415 1613 1818
122 1115 1818 5610 6201
1101 1102 1219 1359 1613
18 1110 1220 3348 1507
;

proc transpose data=a out=b;
        by obs;
        var x1-x5;
run;

proc transpose data=b out=b(drop=_name_ obs) prefix=var_;
        id col1;
        by obs;
        var col1;
run;[/code:1ar03mdf]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2009-12-30 20:06:41 | 只看该作者

Re: 求助:数据分列?

OK、非常谢谢!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2012-7-22 21:48:05 | 只看该作者

Re: 求助:数据分列?

Mark
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 18:58 , Processed in 0.181905 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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