楼主: 郑小知
6189 7

[问答] SAS变量迭代计算如何实现? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

27%

还不是VIP/贵宾

-

威望
0
论坛币
30 个
通用积分
0
学术水平
1 点
热心指数
2 点
信用等级
1 点
经验
487 点
帖子
133
精华
0
在线时间
92 小时
注册时间
2007-5-19
最后登录
2021-5-2

楼主
郑小知 发表于 2011-2-23 00:46:45 |AI写论文
1论坛币
比如:一个变量xt,
xt=lag3(xt)+m;
赋予x初始值,x0=1,x1=2,x3=3,x4=x0+m,以此类推
请问这个如何解决?

最佳答案

关键词:迭代计算 如何实现 lag 初始值 变量 SAS

沙发
guoluo 发表于 2011-2-23 00:46:46
  1. %let m = 10;

  2. data test;
  3.   retain x0 x1 x2 (1 2 3);
  4.   do i = 1 to 20;
  5.     if i in (1,2,3) then xt = i;
  6.         else do;
  7.       if mod(i,3) = 1 then do;
  8.             xt = x0 + &m;
  9.         x0 = xt;
  10.           end;
  11.           else if mod(i,3) = 2 then do;
  12.             xt = x1 + &m;
  13.             x1 = xt;
  14.           end;
  15.           else if mod(i,3) = 0 then do;
  16.             xt = x2 + &m;
  17.             x2 = xt;
  18.           end;
  19.         end;
  20.     output;
  21.   end;
  22.   drop i x0 x1 x2;
  23. run;
复制代码

藤椅
情迷仲夏夜 发表于 2011-2-23 03:22:03
这很容易!有点像dynamic array!

  1. %let m=25;
  2. data tmp;
  3.    array n(*) x1-x&m;
  4.    do i=1 to &m;n[i]=i*1;end;
  5.    keep x1-x&m;
  6. proc print;run;
复制代码

板凳
郑小知 发表于 2011-2-23 05:12:54
what do you want to talk about?I am confused by your answer.
what i want to say is not what you try to solve.
please check it again.it seems like autoregression,AR process.
who can use LAGn to solve it?

报纸
baoaibaobao 发表于 2011-2-23 08:43:16
3# 郑小知 what u want to say?i don't know.

地板
myzhang1982 在职认证  发表于 2011-2-23 09:54:58
lag3(xt)=log(xt)/log3

7
myzhang1982 在职认证  发表于 2011-2-23 10:00:35
用循环语句以及retain应该就能实现迭代计算,由于不是很理解你的问题,没法给你程序

8
郑小知 发表于 2011-2-23 19:23:08
7# guoluo
谢谢高手!最佳答案非你莫属了。你明白我的意思。就是一个AR过程,引用变量滞后n期的数值,请问LAGn函数是否可以用得上?

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

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