SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

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

请教高手一个小问题。

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-9-3 08:31:47 | 只看该作者

请教高手一个小问题。

我正在在处理一批特殊金融数据,先按时间和再按股票代码进行了排序, 我现在想做的事情是将同一时间和同一股票的样本分成一组(大部分是单条数据,但是有部分还是有多条重复,也就是说这些数据除了时间和股票代码相同,其它变量并不相同,如例子中的第三,第四条)后添加分组指针变量n。最后我希望达到的分组变量n效果如下:
变  量      t         stkcd  ?   ?              n
第一条       1         2      ?   ?             1
第二条       2         5      ?  ?       2
第三条       3         8      ?  ?       3
第四条       3         8      ?  ?       3
第五条       4         7      ?  ?       4

问题很弱,不要笑我 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->  <!-- s:shock: --><img src="{SMILIES_PATH}/icon_eek.gif" alt=":shock:" title="Shocked" /><!-- s:shock: -->  <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
有哪位高手能给出一段小程序,如何添加变量n?
first.
和last.
甚至宏我都试过了,搞不定  在线等结果
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-9-3 09:37:39 | 只看该作者

Re: 请教高手一个小问题。

[code:1ei2yhkz]data raw;
        input t stkcd std_n;
datalines;
1 2 1
2 5 2
2 8 3
3 8 4
3 8 4
4 7 5
;

proc sort data=raw out=temp;
        by t stkcd;
run;

data temp;
        retain t stkcd std_n n;
        n+1;
        do _n_=1 by 1 until(last&#46;stkcd);
                set temp;
                by t stkcd;
                output;
        end;
run;[/code:1ei2yhkz]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-9-3 10:10:18 | 只看该作者

Re: 请教高手一个小问题。

多谢牛人这么快回复,你的程序我要消化消化,调试ing。无论如何,先感谢你!


呵呵,刚才调试过了,灵的,可以实现!!!!!好用的一段程序!非常感谢,我都想了好几天了。 <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->  <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> 原来这么简单! <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-9-3 13:17:58 | 只看该作者

Re: 请教高手一个小问题。

[code:1cpckemx]data raw;
   input t stkcd std_n;
datalines;
1 2 1
2 5 2
2 8 3
3 8 4
3 8 4
4 7 5
;

proc sort data=raw out=temp;
   by t stkcd;
run;

data temp_;
    retain t stkcd std_n st1 st2;

    set temp;
    by t stkcd;
    if first&#46;t then st1+1;
    if first&#46;t then st2=1;
        else st2+1;
run;[/code:1cpckemx]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2009-9-3 21:15:53 | 只看该作者

Re: 请教高手一个小问题。

[code:1h4jz7zx]data raw;
   input t stkcd std_n;
datalines;
1 2 1
2 5 2
2 8 3
3 8 4
3 8 4
4 7 5
;
run;

proc sort data=raw out=temp;
   by t stkcd;
run;

data final;
        set temp;
        by t stkcd;
        retain n 0;
        if first&#46;stkcd then n+1;
run;[/code:1h4jz7zx]

我感觉hopewell的程序就是阳春白雪而且风格奇特:理解了说好不理解说怪
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2009-9-3 23:00:09 | 只看该作者

Re: 请教高手一个小问题。

谢谢jingju11  <!-- s:o --><img src="{SMILIES_PATH}/icon_surprised.gif" alt=":o" title="Surprised" /><!-- s:o -->
搞明白了2件事:
1、retain语句在retain的同时赋初值
2、first.variable、last.variable在by多个变量时的取值
[code:2v2gydzb]data final;
   set temp;
   by t stkcd; /* 为by语句指定2个变量(t,stkcd),以便使用特殊变量first&#46;stkcd */
   retain n 0; /* 赋初值的retain语句,n=0 */
   /*flag=first&#46;stkcd;*/ /* first&#46;stkcd标志按t和stkcd分组的开始 */
   if first&#46;stkcd then n+1;        /* 赋分组标志 */
run;[/code:2v2gydzb]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2009-9-3 23:20:50 | 只看该作者

Re: 请教高手一个小问题。

你们是在比谁写得最短吗?
[code:1i7jckc5]data raw;
   input t stkcd std_n;
datalines;
1 2 1
2 5 2
2 8 3
3 8 4
3 8 4
4 7 5
;
run;

proc sort data=raw out=temp;
   by t stkcd;
run;

data final;
   set temp;
   by t stkcd;
   n+first&#46;stkcd;
run;[/code:1i7jckc5]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-9-3 23:31:30 | 只看该作者

Re: 请教高手一个小问题。

<!-- s:cry: --><img src="{SMILIES_PATH}/icon_cry.gif" alt=":cry:" title="Crying or Very sad" /><!-- s:cry: -->
我知道累加语句,也知道first.variable,但从没想过合在一起使.哎,差距呀...
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2009-9-4 09:56:00 | 只看该作者

Re: 请教高手一个小问题。

才发现
我理解错了啊

我的神啊

害羞
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2009-9-4 13:51:16 | 只看该作者

Re: 请教高手一个小问题。

[quote=&quot;ahuige&quot;:3vierax5]你们是在比谁写得最短吗?
[/quote:3vierax5]

<!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> 还是一见你就笑~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 23:13 , Processed in 0.069441 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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