SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 579|回复: 4
打印 上一主题 下一主题

如何定义group

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-6-30 15:22:54 | 只看该作者

如何定义group

data a;
input id $ x;
cards;
a 0
a 1
a 2
a 1
b 3
c 0
c 3
d 2
d 2
e 1
...
;
run;
在上面的data a里,我想建一个group:x_grp,也就是由每个id里distinct x值组成:
data b;
id  x    x_grp
a   0    0_1_2
a   1    0_1_2
a   2    0_1_2
a   1    0_1_2
b   3    3
c   0    0_3
c   3    0_3
d   2    2
d   2    2
e   1
...
请问这个x_grp如何建?
谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2011-6-30 17:38:09 | 只看该作者

Re: 如何定义group

[code:a2d597ur]
data a;
input id $ x $;
cards;
a 0
a 1
a 2
a 1
b 3
c 0
c 3
d 2
d 1
d 2
e 1
;
run;

data a2;
set a;
retain grp;
by id notsorted;
if first.id then grp=x;
else if find(grp,compress(x))=0 then grp=catx('_',grp,x);
if last.id then output;
run;

data b;
merge a a2;
by id;
run;
[/code:a2d597ur]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2011-6-30 18:58:07 | 只看该作者

Re: 如何定义group

[code:1xagyg28]data a;
    input id $ x;
cards;
a 0
a 11
a 1
a 11
b 3
c 0
c 3
d 2
d 2
e 1
;
data b;
    length x_grp $50;
    do _n_=1 by 1 until(last.id);
        set a;
        by id notsorted;
        if indexw(trim(x_grp),cats(x),'_')=0 then x_grp=catx('_',x_grp,x);
    end;
    do _n_=1 to _n_;
        set a;
        output;
    end;
run;[/code:1xagyg28]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2011-7-5 21:07:22 | 只看该作者

Re: 如何定义group

为什么用indexw而非index呢?查了一下,感觉差不多啊。另外为什么用cats(x)而不直接x?直接x也可以run出来结果。

[quote="hopewell":3092qyu1][code:3092qyu1]data a;
    input id $ x;
cards;
a 0
a 11
a 1
a 11
b 3
c 0
c 3
d 2
d 2
e 1
;
data b;
    length x_grp $50;
    do _n_=1 by 1 until(last.id);
        set a;
        by id notsorted;
        if indexw(trim(x_grp),cats(x),'_')=0 then x_grp=catx('_',x_grp,x);
    end;
    do _n_=1 to _n_;
        set a;
        output;
    end;
run;[/code:3092qyu1][/quote:3092qyu1]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2011-7-8 00:54:39 | 只看该作者

Re: 如何定义group

I guess they are the same in this case.
Thx nobodyknows,hopewell ,hssnow .
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 03:39 , Processed in 0.078424 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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