作者MmmRrrrX (银色的灵魂)
站内Statistics
标题Re: [程式] sas 加总问题
时间Tue Apr 6 00:19:37 2010
※ 引述《lsshno1 (朝右边锋迈进)》之铭言:
: 大家好,想请问大家两个问题.
: 首先, 我的资料长的如下:
: y1 y2 y3 y4 y5 y6 . . . . . y14
: N0 N0y1 N0y2 . . .. ..
: N1 N1y1 N1y2
: N2 . . . . ..
: N3
: N4
: 想请问大家我应该怎麽计算 x1=N0y1
: x2=N1y1+N0y2
: x3=N2y1+N1y2+N0y3
: (也就是x_i=sum(NxYy) given x+y=i)
: 谢谢大家!!
提供一下我的想法,
作14个新的变数,假设是a1 a2 .... a14
a1=y1 ; a2=lag1(y2) ; ..... ; a14=lag13(y14) ;
(有点忘了lag函数是不是这样用了)
刚刚开SAS试过,是这样没错
新的资料应该长的像
a1 a2 a3 . . . . . y14
N0 N0y1 . . . . . . . .
N1 N1y1 N0y2 . . . . . . .
N2 N2y1 N1y2 N0y3
N3 ...
..
N13 N13y1 n12y2 ...... N0y14
N499 N499y1 N498y2 N486y14
( 是这样吗? 不是很确定你的资料是不是14*14,
如果是的话应该是从N0到N13 )
再令if a1=. then a1=0;
if a2=. then a2=0;
( 印象中数字加 . (null) 的话会变 . )
最後x=a1+a2+.....+a14;
x就是你要的值
当然如果熟 macro 的话应该可以做到无论几乘几都可以一次搞定
不过我不是很熟,14还不算多,这样应该可以满足你的需求了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.145.80
※ 编辑: MmmRrrrX 来自: 140.119.145.80 (04/06 00:21)
1F:推 lsshno1:我刚刚在洗澡的时候也有想到这个作法 04/06 00:25
2F:→ lsshno1:不过我的data是500*14 04/06 00:26
3F:推 lsshno1:谢谢大家!! 04/06 00:28
检视一下 x500=N499y1+N498y2+N497y3+ ....... + N486y14
感觉上这样的做法结果跟你要的是一样的
因为你第一个是N0不是N1,不好转过过来 -.-"
※ 编辑: MmmRrrrX 来自: 140.119.145.80 (04/06 00:39)
※ 编辑: MmmRrrrX 来自: 140.119.145.80 (04/06 00:41)