全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1513 5
2009-06-15
data CGDATA.stockshare;
    set CGDATA.computationaldata;
    keep _col0 _col1 _col4 _col5-_col11;
run;

data CGDATA.stockshare(drop=i);
   set CGDATA.stockshare;
   array stockshare{*} _col5-_col11;
   array con20{*} con20_2002-con20_2008;
   array con2050{*} con2050_2002-con2050_2008;
   array con50{*} con50_2002-con50_2008;
     do i=1 to 7;
           if stockshare{i} < 0.2 then con20{i}=1;else con20{i}=0;
     if stockshare{i} >= 0.2 and stockshare{i} <= 0.5 then con2050{i}=1;else con2050{i}=0;
     if stockshare{i} > 0.5 then con50{i}=1;else con50{i}=0;
  end;
run;
程序的目的是:构建虚拟变量
                         1. 2002-2008年度 ,持股比例小于0.2时,con20_2002-con20_2008均为1,否则为0
                         2. 2002-2008年度 ,持股比例在0.2--0.5之间时,con2050_2002-con2050_2008均为1,否则为0
                         3. 2002-2008年度 ,持股比例大于0.5时,con50_2002-con50_2008均为1,否则为0

但是程序运行结果为:
                         只有符合第1和第3条件,持股比例在持股比例在0.2--0.5之间时,con2050_2002-con2050_2008仍然全为0。
请大家帮助看看,谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2009-6-15 23:20:32
1# jjpanda1111
try the follows
1. to initialize array con20, con2050, con50 to 0 at the array definition or before do loop.
2. remove
   else con20{i}=0;
   else con2050{i}=0;
   else con50{i}=0;
二维码

扫码加我 拉你入群

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

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

2009-6-16 02:03:02
谢谢楼上的同学!
二维码

扫码加我 拉你入群

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

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

2009-6-16 13:33:42
这个不会,帮顶啦
二维码

扫码加我 拉你入群

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

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

2009-6-27 13:32:04
顶一下,呵呵
二维码

扫码加我 拉你入群

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

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

2009-6-28 11:05:18
用if-then else if
或者用 select when otherwise
可以比较好的解决你的问题,
而不是简单的if -then
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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