楼主: the_fly_winds
1821 6

sas将一行小小的程序改为循环语句。 [推广有奖]

  • 0关注
  • 1粉丝

已卖:168份资源

博士生

8%

还不是VIP/贵宾

-

威望
0
论坛币
1139 个
通用积分
4.9700
学术水平
16 点
热心指数
24 点
信用等级
14 点
经验
2333 点
帖子
106
精华
0
在线时间
264 小时
注册时间
2014-9-28
最后登录
2025-6-4

楼主
the_fly_winds 发表于 2016-10-22 21:08:31 |AI写论文
40论坛币
数据源非常简单,变量名为a;数据为0.1   0.2   0.3   0.4  ...  1.5

原代码如下:
  1. data tmp2;
复制代码
我把他改成循环语句
  1.   data c;
  2.   set tmp;
  3.   array ha(4);
  4.   do i=1 to 4;
  5.   ha(i)=lag&i(a);
  6.   end;
  7.   if _n_>=5 then aa=sum(a,ha(4))/5;
  8.   run;
复制代码
我觉得我的程序好像没有问题,明明逻辑是一样的,只是将原代码的第三行改成了循环,但是不能运行。

求高手看看我的有什么问题,改成循环语句要怎么改呢?

MUA!
关键词:循环语句 小小的 array Data Then 数据源 程序

沙发
wang1839 在职认证  发表于 2016-10-22 21:08:32
  1. data a;
  2. do i=1 to 15;
  3. a=0.1*i;
  4. output;
  5. end;
  6. drop i;
  7. run;

  8. %macro lag;
  9. %do i=1 %to 4;
  10. h(&i.)=lag&i.(a);
  11. %end;
  12. %mend;

  13. data b;
  14.         set a;
  15.         array h(4);
  16.         %lag;
  17.         if _n_>5 then aa=sum(a,h(4))/5;
  18. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
the_fly_winds + 1 + 1 + 1 精彩帖子

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

A man who is frustrated will never stand up.

藤椅
the_fly_winds 发表于 2016-10-22 21:10:05
抱歉,人大经济论坛bug了。
这里是原代码:
data tmp2;
  set tmp;
   ha1=lag(a); ha2=lag2(a); ha3=lag3(a); ha4=lag4(a);
  if _n_>=5 then aa=sum(a,ha1,ha2,ha3,ha4)/5;
  run;

板凳
the_fly_winds 发表于 2016-10-22 21:11:00
抱歉,原代码在这里:
  1. data tmp2;
  2.   set tmp;
  3.    ha1=lag(a); ha2=lag2(a); ha3=lag3(a); ha4=lag4(a);
  4.   if _n_>=5 then aa=sum(a,ha1,ha2,ha3,ha4)/5;
  5.   run;
复制代码

报纸
67890 发表于 2016-10-22 22:24:25
This is wrong:   ha(i)=lag&i(a);

地板
the_fly_winds 发表于 2016-10-22 22:57:20
wang1839 发表于 2016-10-22 22:23
大神我简直要亲你一口了!
但是还有个问题,就是对数组求和。
sum(h(4))的结果=h(4)不等于h1+h2+h3+h4.
怎么对数组求和呢

7
wang1839 在职认证  发表于 2016-10-23 10:59:23
sum(of h1-h4)

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

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