h***y 发帖数: 162 | 1 周末问各位板油一个SAS问题哈~~~大家也放松放松。
有一列数据,比如10,12,34,45,32,21,10,11.
从最后一位11开始,我想用某个比例来估计未来的值,大家可以把这列数据想成是历史
数据,比如那个比例是0.9,那么从11开始,下一个应该是9.9(=11×0.9),再下一个
应该是9.9×0.9,所以你需要用之前一期的数据来算下一期的,假设0.9是可知的,有
没有什么办法可以让我拿到11以后的值。
我想了好久,就是死活没想起来,想把这列数据转成列,没辙,转成行,也没辙,不知
道大家有没有好的办法。
谢谢各位了,大家周末一起high啊~~~ |
a******n 发帖数: 11246 | 2 retain这个变量不就好了。
当然也有可能我没看懂,比如“想把这列数据转成列”,我就没明白...
【在 h***y 的大作中提到】 : 周末问各位板油一个SAS问题哈~~~大家也放松放松。 : 有一列数据,比如10,12,34,45,32,21,10,11. : 从最后一位11开始,我想用某个比例来估计未来的值,大家可以把这列数据想成是历史 : 数据,比如那个比例是0.9,那么从11开始,下一个应该是9.9(=11×0.9),再下一个 : 应该是9.9×0.9,所以你需要用之前一期的数据来算下一期的,假设0.9是可知的,有 : 没有什么办法可以让我拿到11以后的值。 : 我想了好久,就是死活没想起来,想把这列数据转成列,没辙,转成行,也没辙,不知 : 道大家有没有好的办法。 : 谢谢各位了,大家周末一起high啊~~~
|
h***y 发帖数: 162 | 3 关键是retain的话列是永远不变的,如果你把那列数字转成列的话,如果转成行的话,
retain就不行了吧,不知道我有没有理解错retain。 |
a******n 发帖数: 11246 | 4 我还是不明白什么叫把一列数字转成列。。。
另外也不知道什么叫retain的话列永远不变...你是说值?
retain X1;
input X1;
if X1=.; then X1=X1*0.9;
不就好了么?
【在 h***y 的大作中提到】 : 关键是retain的话列是永远不变的,如果你把那列数字转成列的话,如果转成行的话, : retain就不行了吧,不知道我有没有理解错retain。
|
h***y 发帖数: 162 | 5 不是,我的问题是,在原来数列的基础上,扩张数列,有点recursive的意味,就是下
一期的值取决于现值,比如原来数列是:10,12,34,45,32,21,10,11,有8个,
第九个数字是从第八个数字乘上0.9得来,第十个数字是第九个数字乘上0.9得来,以此
类推。我想过retain,但是不可行啊,不知道我有没有说清楚。
thanks again~~~ |
b*****s 发帖数: 11267 | 6 每次output?
【在 h***y 的大作中提到】 : 不是,我的问题是,在原来数列的基础上,扩张数列,有点recursive的意味,就是下 : 一期的值取决于现值,比如原来数列是:10,12,34,45,32,21,10,11,有8个, : 第九个数字是从第八个数字乘上0.9得来,第十个数字是第九个数字乘上0.9得来,以此 : 类推。我想过retain,但是不可行啊,不知道我有没有说清楚。 : thanks again~~~
|
l****u 发帖数: 529 | |
h***y 发帖数: 162 | 8 这些其实我都想过,感觉是可以的,但是实际操作起来就不work,郁闷啊。 |
l****u 发帖数: 529 | 9 data try;
array tr [50] x1-x50;
do i=1 to 50;
if i=1 then tr[i]=11;
else tr[i]=tr[i-1]*0.9;
end;
drop i;
run; |
k*******a 发帖数: 772 | 10 data a(drop=i);
set a end=last;
output;
if last then do i=1 to 10;
x=x*0.9;
output;
end;
run; |
h***y 发帖数: 162 | |