楼主: nannan0120
4189 16

请问如何滚动计算自某指定时间范围的连乘 [推广有奖]

11
nannan0120 发表于 2015-4-13 23:16:12
ntsean 发表于 2015-3-21 03:02
you can also use sql self join
你好,有缺失值的话也可以计算,改如何写程序呢?

12
nannan0120 发表于 2015-4-13 23:26:07
yongyitian 发表于 2015-3-20 10:16
刚做了一下,按行业年份平均的时候想要先算行业年份平均的num,再将平均的num来连乘可以吗,如何实现?谢谢了

QQ图片20150413232348.png (10.12 KB)

QQ图片20150413232348.png

13
yongyitian 发表于 2015-4-14 10:07:04
nannan0120 发表于 2015-4-13 23:26
刚做了一下,按行业年份平均的时候想要先算行业年份平均的num,再将平均的num来连乘可以吗,如何实现?谢谢 ...
没有数据和想要的结果,用文字说不太明白。大概应在一个数据步,set语句后要用by语句分组计算平均值。 用另一个数据步做连乘。

14
nannan0120 发表于 2015-4-14 10:27:42
yongyitian 发表于 2015-4-14 10:07
没有数据和想要的结果,用文字说不太明白。大概应在一个数据步,set语句后要用by语句分组计算平均值。 用 ...
youyitian大牛!,在按行业分组的时候遇到问题,想请教一下大概是这样
id date ind ind1 num
1 2011-01-12 a a1 3
1 2011-09-09 a a1 0.12
1 2012-02-03 a a1 -0.3
3 2013-03-04 c c1 1
3 2013-05-01 c c1 3
3 2015-04-01 c c1 87
5 2011-09-09 c c2 4
5 2013-07-08 c c2 3
6 2012-02-03 c c1 11
6 2013-05-01 c c1 23
6 2014-01-02 c c1 34
7 2011-09-09 b b4 56
7 2012-02-03 b b4 2
7 2013-05-01 b b4 1
14 2011-09-09 b b5 9
14 2011-10-11 b b5 0.98
14 2012-02-05 b b5 -0.11
14 2013-02-15 b b5 2
14 2013-03-01 b b5 3
这是数据的一个减缩版,我需要按id,date算每一天(date)每个行业(ind)的平均num,但是现在遇到一个问题,我想用ind1中的c1,c2,c3...替换ind中的c的值,然后保留ind中的其他值不变,再来求平均num,如何能办到呢,我说的明白吗,如果没有麻烦联系我补充。

QQ图片20150414101722.png (23.68 KB)

QQ图片20150414101722.png

15
yongyitian 发表于 2015-4-14 11:15:02
nannan0120 发表于 2015-4-14 10:27
youyitian大牛!,在按行业分组的时候遇到问题,想请教一下大概是这样
这是数据的一个减缩版,我需要按i ...
try this.

data have1;
   length ind $3.;
   set have;
   if ind = 'c' then ind=ind1;
run;

proc sql;
    select id, date, ind, ind1, avg(num) as mnum
    from have1
    group by id, date, ind;
run;

16
nannan0120 发表于 2015-4-14 13:14:04
yongyitian 发表于 2015-4-14 11:15
try this.

data have1;
youyitian大,运行了一下提示说明proc sql语句被立即执行,run语句无效,我忘了说我这边不方便展示数据量很大,几百万条,提示窗口已满很多次,能否不提示直接运行处结果呢。 QQ图片20150414131231.png QQ图片20150414131129.png 计算平均的时候只看ind(行业)日期(date)就可以了,我改了一下,能否保留除了这些计算值以外的其他变量呢proc sql;create table abc2 as
select  date, indcd,prod,dret2,dret,stkcd,avg(dret) as mdret
    from want4
    group by stkcd, date, indcd;
quit;
这样做有问题,算出来的平均值就是dret本身,但是我想保留从want4中的其他数据如prod,dret2这些,只不过这些数据都不参与求平均,该如何做呢?
搞定了,谢谢有一天大大,赞啊!

17
nannan0120 发表于 2015-4-24 20:26:12
yongyitian 发表于 2015-3-20 10:16
有一天大大,如果我想求一年前到比现在提前两天的,是不是(0<= days < 365)改成(   -365<=days<-2)就行?这个是根据该贴你的第一次回复想的,另外,如果我要求某列数据的标准差和方差(即波动)比如根据年份date,id求num的标准差或方差,应该怎么处理呢?除了这两个问题,我还有几个问题都想请教你,明天你有空吗?添麻烦

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 10:03