全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1438 7
2012-11-21
各位好。sas是新手,不知道下面这个问题怎么解决。还请大家帮忙。

我的数据是这样子的。
stock_codedayprice

1

20111231

1

1

20111230

2

1

20111229

3

1

20111228

4

.......

数据一直到1995年。
我想看,对于每一天来说,之前的一年,的price的最大值。比如,2011年12月31号,我想把,一直到2011年1月1日,最大值挑出来。 2011年12月30号,我想把,一直到2010年12月30日,这期间的最大值挑出来。

sas新手,真的不知道该怎么弄。。。。谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-11-21 15:45:15
proc sql;
select max(price),year(day) as year from yourdsn
group by year;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-20 17:05:16
楼主我爱你!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-20 18:53:21
可以把price的值赋给一个数组
用数组来解决
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-20 22:35:02
define an ordered hash object by descending price and date
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-8-21 21:06:20
如果所有的计算都是针对同一支股票,365天包括当天的话,
data result;
        if _N_= 1 then do;
                declare hash h(dataset: "input", multidata: 'y');
                h.defineKey('stock_code');
                h.defineData('day', 'price');
                call missing(day, price);
                h.defineDone();
        end;

        set input(rename = (day = current_day price = current_price));
        max_price = 0;

        /* Iterate over the hash */
        rc = h.find(key: stock_code);
        do while (rc = 0);
                if (current_day - 365 < day <= current_day) then do;
                        max_price = max(max_price, price);
                end;
                rc = h.find_next(key: stock_code);
        end;
        keep stock_code current_day current_price max_price;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群