SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

123
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

sas一个取最大值的问题[求助,急!!!]

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
21#
 楼主| 发表于 2010-8-27 05:20:30 | 只看该作者

Re: sas一个取最大值的问题[求助,急!!!]

猪头又上当了!
mz同学你说得不错,可以施采补之术
你只有几万行数据,不必担心冗余。
说来说去,问题还得靠你自己发现解决。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
22#
 楼主| 发表于 2010-8-27 08:39:48 | 只看该作者

Re: sas一个取最大值的问题[求助,急!!!]

越来越没耐心看这种描述不清的问题了。 <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
23#
 楼主| 发表于 2010-8-27 11:05:48 | 只看该作者

Re: sas一个取最大值的问题[求助,急!!!]

真的太感谢你了:)
你的这个方法比我那个明显好。。。
基本问题都解决,受教了受教了!!!

[quote=&quot;死猪头&quot;:3uagxwrw]猪头又上当了!
mz同学你说得不错,可以施采补之术,在第一个proc sort后加
[code:3uagxwrw]
data zhutou(drop=last_year);
        do until (last&#46;company);
                do until(last&#46;industry);
                        set zhutou;
                        by company industry;
                end;
                last_year = max(year, last_year);
        end;

        do until (last&#46;company);
                do until(last&#46;industry);
                        set zhutou;
                        by company industry;
                        output;
                end;
                if year&lt;last_year then do;
                        year = last_year;
                        count=&#46;;
                        output;
                end;
        end;
run;

proc expand data=zhutou out=zhutou from=day;
        id year;
        by company industry;
        convert count/method=none;
run;
[/code:3uagxwrw]
也可以自行采补,将data sizhutou步换成
[code:3uagxwrw]
data sizhutou(drop=count year prev_year last_year rename=(year1=year));
        do until (last&#46;company);
                do until(last&#46;industry);
                        set zhutou;
                        by company industry;
                end;
                last_year = max(year, last_year);
        end;

        do until (last&#46;company);
                acum_count=0;
                do until(last&#46;industry);
                        set zhutou;
                        by company industry;
                 if not first&#46;industry then do year1=prev_year+1 to year-1;
                            random_number = ranuni(12345);
                                 output;
                         end;
                        acum_count = sum(acum_count, count);
                        year1 = year;
                        random_number = ranuni(12345);
                        output;
                        prev_year = year;
                end;
                do year1 = year+1 to last_year;
                        random_number = ranuni(12345);
                        output;
                end;
        end;
run;
[/code:3uagxwrw]
你只有几万行数据,不必担心冗余。
说来说去,问题还得靠你自己发现解决。[/quote:3uagxwrw]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 01:37 , Processed in 0.086186 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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