楼主: 黑暗的造访
1769 7

新手求助-求均值 [推广有奖]

  • 2关注
  • 8粉丝

教师

已卖:150份资源

教授

65%

还不是VIP/贵宾

-

TA的文库  其他...

123

威望
0
论坛币
2868 个
通用积分
0.3165
学术水平
7 点
热心指数
12 点
信用等级
8 点
经验
1694 点
帖子
374
精华
0
在线时间
2561 小时
注册时间
2009-8-13
最后登录
2026-1-22
毕业学校
厦门大学

楼主
黑暗的造访 在职认证  发表于 2014-5-6 23:17:46 |AI写论文
50论坛币
初学者刚接触SAS,现在有一组数据,如下
data a1;
input i t y;
cards;
1 1 34
1 2 35
1 3 65
2 1 66
2 2 52
2 3 51
3 1 32
3 2 45
3 3 75
4 1 35
4 2 52
4 3 12
run;

想在原来的表的基础上生成另外一列$\bar{y_{t-1}}$,其中$\bar{y_{t-1}}=\sum_{i}^{4}y_{i,t-1}$
怎么用SAS实现呀?求助求助


最佳答案

关键词:新手求助 cards Input card 求助求助 初学者

沙发
jeozu 发表于 2014-5-6 23:17:47
  1. proc sort data=a1; by t;run;   /*modified*/
  2. proc transpose data=a1 out=a2 prefix=_;
  3. id i;
  4. by t;
  5. var y;
  6. run;
  7. data a3;
  8. set a2;
  9. yt_1=sum(lag1(_1), lag1(_2), lag1(_3), lag1(_4));
  10. run;
  11. proc sql noprint;
  12. create table final as
  13. select a1.*
  14. , a3.yt_1
  15. from a1, a3
  16. where a1.t=a3.t
  17. ;
  18. run;
复制代码

藤椅
黑暗的造访 在职认证  发表于 2014-5-7 14:14:02
jeozu 发表于 2014-5-7 11:58
非常非常感谢您的回答。
但请原谅我是个菜鸟,我在试运行的时候,第一块transpose代码出现如下错误:
ERROR: 数据集 WORK.A1 不是以“升序”顺序排序的。当前 BY 组中“t=3”,下一个 BY 组中“t=1”。

我的先把lagy做出来,然后按组计算均值。但是之后我就不知道怎么做了。

data a0;
set a1;
ylag=lag1(y);
run;

proc sort data=a0;
by t;

板凳
jeozu 发表于 2014-5-7 15:42:07
黑暗的造访 发表于 2014-5-7 14:14
非常非常感谢您的回答。
但请原谅我是个菜鸟,我在试运行的时候,第一块transpose代码出现如下错误:
E ...
已修改。添加一个sort就行了。

报纸
learsaas 发表于 2014-5-7 16:19:38
呵呵,有更好的代码

地板
黑暗的造访 在职认证  发表于 2014-5-7 16:36:18
learsaas 发表于 2014-5-7 16:19
呵呵,有更好的代码
能指导一下吗?
如果i和t都非常大的话,比如i=100,t=100,代码应该如何写呢?

7
jeozu 发表于 2014-5-7 16:45:19
黑暗的造访 发表于 2014-5-7 16:36
能指导一下吗?
如果i和t都非常大的话,比如i=100,t=100,代码应该如何写呢?
sas中,你有10000个i都是一样的。SAS在表处理上和其他的不一样,PDV只取决于你的内存。
另外一种做法是用sql, 不怎么直观。
先sum, 后lag.
  1. proc sql noprint;
  2. create table tmp as
  3. select a1.*
  4. , b.yt_1
  5. from a1 left join (select t, sum(y) as yt_1 from a1 group by t) b
  6. on a1.t=b.t+1
  7. ;
  8. quit;
复制代码

8
黑暗的造访 在职认证  发表于 2014-5-7 17:06:30
jeozu 发表于 2014-5-7 16:45
sas中,你有10000个i都是一样的。SAS在表处理上和其他的不一样,PDV只取决于你的内存。
另外一种做法是用 ...
恩,十分谢谢您的指导!
刚接触SAS没多久,我现在还不是很明白SAS data步里面的具体运算步骤是怎么样的。。。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-28 17:41