楼主: chenchengzhi22
2485 11

某事件发生时,前三个,后三个的累乘祈求@jingju11等大牛现身 [推广有奖]

  • 0关注
  • 1粉丝

硕士生

87%

还不是VIP/贵宾

-

威望
0
论坛币
55 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1889 点
帖子
126
精华
0
在线时间
225 小时
注册时间
2010-5-14
最后登录
2023-9-1

楼主
chenchengzhi22 发表于 2013-7-28 12:50:14 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
附件中有这样一组数据,小弟想算出每当facpr不为0或者空值是他前三个return和后三个ret的累乘值,请问各位大牛不吝指教:)jingju大牛现身啊:)   
二维码

扫码加我 拉你入群

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

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

关键词:ING RETURN 不吝指教 turn RET return

本帖被以下文库推荐

沙发
chenchengzhi22 发表于 2013-7-28 12:57:00
@jingju11, 大人现身呀:)

藤椅
chenchengzhi22 发表于 2013-7-28 22:32:28
顶起:)

板凳
jingju11 发表于 2013-7-28 22:57:56
肯定有更有效率的写法,也没有仔细验证.权且抛砖引玉.
京剧


  1. data _null_;
  2.    call symputx('nobs', nobs); set have nobs =nobs; stop;
  3.    run;
  4. data have2;
  5.    array t[&nobs, 3] _temporary_; array r[&nobs,2] _temporary_;
  6.    if _n_ =1 then do;
  7.       do p =1 to &nobs;
  8.          set have point =p;
  9.          t[p,1] =p; t[p,2] =ret; t[p,3] =facpr;
  10.          end;
  11.       do p =1 to &nobs;
  12.          if t[p,3] then do;
  13.             if p >3       then r[p,1] =t[p-1,2]*t[p-2,2]*t[p-3,2];*3 days before;
  14.             if p <&nobs-3 then r[p,2] =t[p+1,2]*t[p+2,2]*t[p+3,2];*3 days after-;
  15.             end;
  16.          end;      
  17.       end;
  18.    set have;
  19.    r_b3 =r[_n_,1]; r_a3=r[_n_, 2];
  20. run;
复制代码

已有 3 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Imasasor + 100 + 100 + 5 + 5 + 5 精彩帖子,一呼唤就现身啊
chenchengzhi22 + 1 + 1 + 1 好的意见建议
boe + 1 + 1 + 1 大牛,学习了!谢谢!

总评分: 经验 + 100  论坛币 + 100  学术水平 + 7  热心指数 + 7  信用等级 + 7   查看全部评分

报纸
boe 发表于 2013-7-29 01:57:55
是照着某大牛的葫芦画瓢,自己也不知道其中的逻辑,最后错位了也不知道怎么改,还请多多指点。
还数@jingju11大人的正统。
  1. data tt;
  2.     set t;
  3.         array r{7} _temporary_;
  4.         do i=1 to 6;
  5.             r{i}=r{i+1};
  6.         end;
  7.         r{7}=ret;
  8.         if lag3(FACPR) gt 0 then do;
  9.             lead_3=r{1}*r{2}*r{3};
  10.             lag_3=r{5}*r{6}*r{7};
  11.         end;
  12.         drop i;
  13. run;
复制代码
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
chenchengzhi22 + 1 + 1 + 1 谢谢帮助:)
jingju11 + 5 + 5 + 3 精彩帖子

总评分: 学术水平 + 6  热心指数 + 6  信用等级 + 4   查看全部评分

Gorgeous girl , I love !

地板
jingju11 发表于 2013-7-29 02:28:51
boe 发表于 2013-7-29 01:57
是照着某大牛的葫芦画瓢,自己也不知道其中的逻辑,最后错位了也不知道怎么改,还请多多指点。
还数@jingj ...
很喜欢这样巧妙的程序.

一点意见:如果错位不算什么,有一点或许值得注意:比如,如果最后一条记录的的FACPR=1的话,应该可以算出之前的3个乘积,但是因为程序滞后三位的原因,也将无法显示.
个人意见.也没有充分考虑.
最最重要的是,我不是大牛...

京剧
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
boe + 1 + 1 + 1 谢谢指点!好谦虚!

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

7
boe 发表于 2013-7-29 05:12:30
jingju11 发表于 2013-7-29 02:28
很喜欢这样巧妙的程序.

一点意见:如果错位不算什么,有一点或许值得注意:比如,如果最后一条记录的的F ...
您说的很有道理啊,我确实没有考虑最后一条记录大于零的问题。
改成下面这样可以解决,但lag_3还是错位,可能真得用merge把r5-r7先上移3行。
不知道有没有更好的方法,还请您多指点。
您的方法已经很完美了。
真是越牛越谦虚,佩服!
  1. data tt;
  2.     set t;

  3.         array r{7} _temporary_;
  4.         do i=1 to 4; r{i}=r{i+1}; end; r{4}=ret;
  5.         do i=5 to 6; r{i}=r{i+1}; end; r{7}=ret;

  6.         if FACPR gt 0 then lead_3=r{1}*r{2}*r{3};
  7.         if lag3(FACPR) gt 0 then lag_3=r{5}*r{6}*r{7};

  8.         drop i;
  9. run;
复制代码
Gorgeous girl , I love !

8
chenchengzhi22 发表于 2013-7-29 07:29:00
谢谢两位大牛的精彩答案,小弟受益匪浅:)

9
jingju11 发表于 2013-7-29 09:44:01
boe 发表于 2013-7-29 05:12
您说的很有道理啊,我确实没有考虑最后一条记录大于零的问题。
改成下面这样可以解决,但lag_3还是错位 ...
感谢指点.修改了一下程序:京剧
  1. data _null_;
  2.    call symputx('nobs', nobs); set have nobs =nobs; stop;
  3.    run;
  4. data have1;
  5.    array t[&nobs, 2] _temporary_;
  6.    if _n_ =1 then do p =1 to &nobs;
  7.       set have point =p;
  8.       t[p,1] =p; t[p,2] =ret;
  9.       end;
  10.    set have;
  11.    if facpr then do;
  12.       if _n_ >3       then r_b3 =t[_n_-1,2]*t[_n_-2,2]*t[_n_-3,2];*3 days before;
  13.       if _n_ <&nobs-3 then r_a3 =t[_n_+1,2]*t[_n_+2,2]*t[_n_+3,2];*3 days after-;      
  14.       end;
  15.    run;
复制代码

已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 100 + 100 + 3 + 3 + 3 是啊,越牛的人越谦虚!
boe + 1 + 1 + 1 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 4  热心指数 + 4  信用等级 + 4   查看全部评分

10
boe 发表于 2013-7-29 13:30:06
强大!
好好学习一下。
Gorgeous girl , I love !

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

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