SAS中文论坛

标题: 关于SAS中处理多表数据的问题 [打印本页]

作者: shiyiming    时间: 2005-8-14 23:56
标题: 关于SAS中处理多表数据的问题
我现在有两个数据表,一张为基表,另一张是辅表
对基表中的每个observation中的一个数据作修正
需要根据基表中这条observation的日期数据
去辅表中取一组observation中的数据来结合基表中的那个数据计算后
在基表中添加新的修正值

在SAS中data步中set两张表就直接把两张表合并了
是不是应该写个macro以基表的数据作宏参数,去辅表中取数据呢?
可是macro没有返回值
调用完macro后,我怎么获取哪些数据呢?

还是对sas的编程不是很熟

这在普通的编程语言中就是遍历基表
然后在每天数据中调用一个获取辅表数据的Function
根据Function的返回值修正基表的数据就可以了

SAS中不能写有返回值的Function,我怎么处理这类问题阿!!

比如我有下面的基表:
Obs JJDM RQ DWJZ
335 184688 03JUN2005:00:00:00.000 0.9211
336 184688 10JUN2005:00:00:00.000 0.9964
337 184688 17JUN2005:00:00:00.000 0.9891
338 184688 24JUN2005:00:00:00.000 1.0015
339 184688 01JUL2005:00:00:00.000 0.9868
340 184688 08JUL2005:00:00:00.000 0.9689
341 184688 15JUL2005:00:00:00.000 0.9893
342 184688 22JUL2005:00:00:00.000 1.0045
343 184688 29JUL2005:00:00:00.000 1.0292
344 184688 05AUG2005:00:00:00.000 1.0430


对每个obs取JJDM,RQ作参数取数据
例如对obs 344 取JJDM 184688 ,RQ:05AUG2005:00:00:00.000 作参数
去辅表中得到
Obs JJDM JZRQ FHBL CXR
1 184688 30JUN1999:00:00:00.000 . .
2 184688 30JUN2000:00:00:00.000 . .
3 184688 31DEC1998:00:00:00.000 0.30 06APR1999:00:00:00.000
4 184688 31DEC1999:00:00:00.000 2.75 04APR2000:00:00:00.000
5 184688 31DEC2000:00:00:00.000 5.30 05APR2001:00:00:00.000
6 184688 31DEC2001:00:00:00.000 0.14 05APR2002:00:00:00.000
7 184688 30JUN2002:00:00:00.000 . .
8 184688 31DEC2002:00:00:00.000 . .
9 184688 30JUN2003:00:00:00.000 . .
10 184688 31DEC2003:00:00:00.000 . .
11 184688 30JUN2004:00:00:00.000 0.60 30JUN2004:00:00:00.000
12 184688 31DEC2004:00:00:00.000 . .

获得fhbl数组0.30 ,2.75 ,5.30 ,0.14 ,0.60
主表dwjz:1.0430为参数 作一个函数计算
得到的返回值作为基表新的数据dwjzxz(1.1432)

不知道这个过程有没有说清楚呢??
作者: shiyiming    时间: 2005-8-25 19:12
标题: 放到数据库里处理
这种问题我一向放在数据库里面操作。比如用oracle,这样就很简单了!!
作者: shiyiming    时间: 2006-2-28 11:23
标题: 我也想问这个问
我也想问这个问题,那位能回答一下.




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2