SAS中文论坛
标题:
请问:如何对一组日期做循环
[打印本页]
作者:
shiyiming
时间:
2011-1-5 11:12
标题:
请问:如何对一组日期做循环
数据如下:
date value
2009-1-9 -7.87
2009-1-9 1.67
2009-1-9 —
2009-1-9 4.94
2009-1-9 -2.15
2009-1-16 -0.77
2009-1-16 -0.1
2009-1-16 0.06
2009-1-16 0.28
2009-1-16 0.35
2009-1-23 -0.58
2009-1-23 0.2
2009-1-23 —
2009-1-23 0.41
2009-1-23 0.83
2009-2-6 5.64
2009-2-6 6.28
2009-2-6 7.84
… …
2010-8-6 -
2010-8-6 -
2010-8-6 1.09
2010-8-6 1.2
2010-8-6 1.65
现在想做的是,在每一天,如2009-1-9,计算value正数和负数的个数。用循环语句时,日期字符格式是不是要转换成数值格式。谢谢!
作者:
shiyiming
时间:
2011-1-5 21:56
标题:
Re: 请问:如何对一组日期做循环
字符型的日期比较数值型几乎没有任何的好处。不过,日期格式的变量本是数值型。
作者:
shiyiming
时间:
2011-1-6 09:06
标题:
Re: 请问:如何对一组日期做循环
哦,谢谢。那么我如果想对下面这种类似数据在每一天计算它的正负数个数,应该怎么做循环呢?
date value
2009-1-9 -7.87
2009-1-9 1.67
2009-1-9 2.34
2009-1-9 4.94
2009-1-9 -2.15
2009-1-16 -0.77
2009-1-16 -0.1
2009-1-16 0.06
2009-1-16 0.28
2009-1-16 0.35
2009-1-23 -0.58
2009-1-23 0.2
2009-1-23 -1.25
2009-1-23 0.41
2009-1-23 0.83
2009-2-6 5.64
2009-2-6 6.28
2009-2-6 7.84
… …
2010-8-6 -4.56
2010-8-6 -7.98
2010-8-6 1.09
2010-8-6 1.2
2010-8-6 1.65
作者:
shiyiming
时间:
2011-1-6 10:28
标题:
Re: 请问:如何对一组日期做循环
[code:1ui18nqx]data raw;
input date:yymmdd10. value;
format date yymmdd10.;
datalines;
2009-1-9 -7.87
2009-1-9 1.67
2009-1-9 2.34
2009-1-9 4.94
2009-1-9 -2.15
2009-1-16 -0.77
2009-1-16 -0.1
2009-1-16 0.06
2009-1-16 0.28
2009-1-16 0.35
2009-1-23 -0.58
2009-1-23 0.2
2009-1-23 -1.25
2009-1-23 0.41
2009-1-23 0.83
2009-2-6 5.64
2009-2-6 6.28
2009-2-6 7.84
2010-8-6 -4.56
2010-8-6 -7.98
2010-8-6 1.09
2010-8-6 1.2
2010-8-6 1.65
;
data out(drop=value);
plus=0; minus=0;
do _n_=1 by 1 until(last.date);
set raw;
by date;
if value ge 0 then plus+1;
end;
minus=_n_-plus;
run;[/code:1ui18nqx]
作者:
shiyiming
时间:
2011-1-7 23:58
标题:
Re: 请问:如何对一组日期做循环
[code:2w0mnqvo]title;
data a;
input date : yymmdd10. value;
format date mmddyy10.;
cards;
2009-1-9 -7.87
2009-1-9 1.67
2009-1-9 -8.9
2009-1-9 4.94
2009-1-9 -2.15
2009-1-16 -0.77
2009-1-16 -0.1
2009-1-16 0.06
2009-1-16 0.28
2009-1-16 0.35
2009-1-23 -0.58
2009-1-23 0.2
2009-1-23 -0.7
2009-1-23 0.41
2009-1-23 0.83
2009-2-6 5.64
2009-2-6 6.28
2009-2-6 7.84
;
proc sort;
by datedata;
data b;
set a;
by date;
if first.date then do; pos=0;neg=0;end;
pos+(value>0);
neg+(value<0);
if last.date;
keep date pos neg;
run;
proc print;
run;
[/code:2w0mnqvo]
作者:
shiyiming
时间:
2011-1-10 20:16
标题:
Re: 请问:如何对一组日期做循环
谢谢hopewell。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2