楼主: 08jlhq
4043 1

SAS 按组填充缺失值 [推广有奖]

  • 4关注
  • 1粉丝

已卖:1568份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
3220 个
通用积分
34.5836
学术水平
18 点
热心指数
20 点
信用等级
11 点
经验
775 点
帖子
173
精华
0
在线时间
720 小时
注册时间
2008-8-17
最后登录
2024-12-6

楼主
08jlhq 发表于 2016-4-30 16:52:12 |AI写论文
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;
关键词:缺失值 IPO OLD 涨跌幅 第一天 Sas 上市
开始对自己的逻辑负责

沙发
5傻小不点 发表于 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;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 04:51