楼主: Ryomac
1681 4

左连接遇到麻烦了,求助。。。 [推广有奖]

  • 4关注
  • 0粉丝

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
46 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1339 点
帖子
36
精华
0
在线时间
163 小时
注册时间
2013-11-21
最后登录
2018-9-23

楼主
Ryomac 学生认证  发表于 2014-8-23 23:38:37 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
  1. proc sql;
  2.    create table size_assign       
  3.    as select a.permno, a.date, a.size, a.ret,
  4.         case when size<=per20 then 's1'
  5.              when per20<size<=per40 then 's2'
  6.          when per40<size<=per60 then 's3'
  7.                  when per60<size<=per80 then 's4'
  8.                  else 's5'
  9.                 end as size_port
  10.    from msf(where=(year(date)>1926 and size>0)) as a
  11.    left join nyse as b
  12.    on (year(a.date)=year(b.date)+1 if month(a.date)<6)
  13.      or (year(a.date)=year(b.date) if month(a.date)>=6);
  14. quit;
复制代码
提示说 if 那里出问题了,,有人知道如果不用if的话,改换成什么吗??when试过了也不可以
二维码

扫码加我 拉你入群

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

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

关键词:麻烦了 proc sql Select Create assign

沙发
bobguy 发表于 2014-8-24 03:53:44 |只看作者 |坛友微信交流群
Syntax is wrong. If is not part of SQL.

Please tell us what you really want?

使用道具

藤椅
Ryomac 学生认证  发表于 2014-8-24 09:29:59 |只看作者 |坛友微信交流群
bobguy 发表于 2014-8-24 03:53
Syntax is wrong. If is not part of SQL.

Please tell us what you really want?
我现在有6月份公司规模百分位数,有20%、40%、60%、80%的,想把其他月份公司的size按照这个百分位数划分相应的区间,,,这部分程序是组fama french 25 portfolios的一部分

使用道具

板凳
bobguy 发表于 2014-8-25 01:49:50 |只看作者 |坛友微信交流群
Ryomac 发表于 2014-8-24 09:29
我现在有6月份公司规模百分位数,有20%、40%、60%、80%的,想把其他月份公司的size按照这个百分位数划分相 ...
You even don't need a left join if I understand the problem correct.

Here is a simple example with the logic.

data sales;
   do month=1 to 6;
      n=ranuni(123)*1000;
          do id=1 to n;
             sales=round(ranuni(123)*10000 ,1);
                 output;
          end;
        end;
run;

proc means data=sales noprint;
var sales;
output out=pctls p20=p20 p40=p40 p60=p60 p80=p80 ;
where month=6 ;
run;

proc sql;
   create table size_assign      
   as select month, sales,
        case when sales<=p20 then 's1'
             when p20<sales<=p40 then 's2'
         when p40<sales<=p60 then 's3'
                 when p60<sales<=p80 then 's4'
                 else 's5'
                end as size_port
   from  sales , pctls
   ;
   quit;

   proc print;run;

使用道具

报纸
Ryomac 学生认证  发表于 2014-8-25 12:06:44 |只看作者 |坛友微信交流群
可能是我没说清楚,你的解决方案和我要的有点出入,,不过问题还是解决了,谢谢了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-23 23:22