全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3980 1
2016-04-30
悬赏 10 个论坛币 已解决
我有下面的数据:
id  涨跌幅  ipo old
001 0.01    1    1
001  0.02   2    .
002  0.44  1     0
002   0.22  2     .
002    0.02  3   .
想实现为:
id  涨跌幅  ipo old
001 0.01    1    1
001  0.02   2    1
002  0.44  1     0
002   0.22  2    0
002    0.02  3   0

也就是说, ipo等于1而且第一天的涨跌幅小于10%的股票不是新股,对于该股,所有交易日的old=1;
反之,如果ipo=1 而且第一天涨跌幅超过15%则为新股,对于该股,所有交易的old=0希望各位大牛路过帮忙解答!

最佳答案

5傻小不点 查看完整内容

没测试过。。。总之用retain就行 data 要得到的数据表名; set 第一个数据表名; by id notsorted; retain old; if first.id & 涨跌幅0.15 then old=0; run; data 要得到的数据表名; set 第一个数据表名; retain old; if ipo=1 & 涨跌幅0.15 then old=0; run;
二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-30 16:52:13
没测试过。。。总之用retain就行

data 要得到的数据表名;
set 第一个数据表名;
by id notsorted;
retain old;
if first.id & 涨跌幅<0.1 then old=1;
else if first.id & 涨跌幅>0.15 then old=0;
run;

data 要得到的数据表名;
set 第一个数据表名;
retain old;
if ipo=1 & 涨跌幅<0.1 then old=1;
else if ipo=1 & 涨跌幅>0.15 then old=0;
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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