全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4534 9
2011-09-13
悬赏 50 个论坛币 未解决
data yy;
input x y;
cards;
1 0
2 0.4
3 1.1
4 1.3
5 1.4
6 1.1
7 0.9
8 1.1
9 0.4
10 0.8
;run;
元数据如上: 当y大于1时,买入;一旦买入后,持有至Y小于0.5或者大于1.5才卖出,
我想在set数据集的时候,再加一列c,作为判断,比如“Buy”或“sell”

请高手帮我解决,要求是在data步内的循环,如:
data xx;
do x=1 to 202;
set yy;
if Y>1 then do;c="buy";output;end;
.....

我想到的是结合goto语句,但是做恶劣半天都不行~
二维码

扫码加我 拉你入群

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

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

全部回复
2011-9-13 23:42:52
我也看不懂...
二维码

扫码加我 拉你入群

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

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

2011-9-13 23:52:57
复制代码
c="buy" means we buy now
c="sell" means we sell now
c="yes" means we have it
c="no" means we dont have it
二维码

扫码加我 拉你入群

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

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

2011-9-14 04:36:36
向ls大牛学习,对循环语句和retain的用法有了更深的认识
二维码

扫码加我 拉你入群

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

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

2011-9-14 08:49:24
zhangzachary 发表于 2011-9-13 23:52
c="buy" means we buy now
c="sell" means we sell now
c="yes" means we have it
你好,你的语句可以实现目前的功能,但是你所有的IF 和 Else If都处在一个数据行上,
我其实后面的判断条件还有好几个,如果写很多个IF Else的话不现实,而且If的条件有时还要用到上一行的状态

,我想实现的是:
根据第一行判断,if。。。then。。。,如果合适了跳至下一行,所有想用goto解决
如:

data xx;
set yy;
if Y>1 then do;
                      c="买";goto jj;output;
                 end;
jj: if (y>1.5 or y<0.5) then  do;
                     c="平仓";end;
         else c="持有";                    
.....
我的意思是,这样一行一行的判断下去,。。。但是对SAS的DATA步里面的Goto,循环还不是很清楚,请高手指点~~
二维码

扫码加我 拉你入群

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

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

2011-9-14 15:31:45
sun5008 发表于 2011-9-14 08:49
你好,你的语句可以实现目前的功能,但是你所有的IF 和 Else If都处在一个数据行上,
我其实后面的判断 ...
其实程序可以优化的......
比如认为if else比较麻烦,可以用if then do然后return end;这样就可以分别对各种条件进行判别:
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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