作者paochien (烦躁的调子)
看板Statistics
标题[程式] SAS循环加总的问题
时间Mon Mar 15 16:30:33 2010
[软体程式类别]:
SAS
[程式问题]:
资料处理
[软体熟悉度]:
新手(不到1个月)
[问题叙述]:
各位高手们大家好!!!
很嫩的新手小妹我想跟大家请教一些问题
请各位大德给点指导啦 :)
资料长得像这样:
obs ID year QQQ PPP Diff(=QQQ-PPP) result
1 A 94 1 2 -1
2 A 95 3 3 0
3 A 96 -5 -6 1
4 A 97 7 7 0
5 A 98 11 8 3
6 A 99 4 2 2
7 B 01 0 -1 1
8 B 02 2 3 -1
9 B 03 -1 -2 1
10 C 97 9 8 1
11 D 98 3 0 3
12 D 99 5 0 5
13 D 00 2 0 2
14 D 01 -4 -2 -2
15 D 02 -5 7 -12
rate=0.1
我想对同一个ID连续抓三笔资料
然後分别对每年度做计算,不过计算的方法有点特别
result=sum [(diff/((1+rate)^第n个资料))]
例如:
94年的A想算出
result = (-1/1.1)+(0/(1.1^2))+(1/(1.1^3))
95年的A
result= (0/1.1)+(1/(1.1^2))+(0/(1.1^3))
现在碰到的问题就是:
1.怎麽对一个ID设定往下三笔资料然後计算?
2.还有就是如何设定不足三笔资料的result为可得的最後一个资料?
(例如98年和99年A的result都设为97年A的result)
3.如果像C一样无法算出一个result则设为Missing
请各位指点一下啦<(_ _)>感谢!!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.232.56
1F:推 tew:对每个A由大排到小 抓前三笔 就是你要的 03/15 17:33
2F:→ paochien:你是说fisrtobs吗?可是我要问的不是这个@@ 03/15 19:15
3F:推 tew:proc sort;by id descending y; 接下来你试试看吧 03/15 19:50
4F:推 tew:另外我回的 也不是firstobs 03/15 19:54
5F:→ paochien:那如果要再往下推从A的第2年资料开始抓呢??? 03/15 20:41
6F:→ ASD332:T大建议的应该是要配合 lag 这个函数,希望没解读错 ^^ 03/15 20:58