作者kurtasd (阿炫)
站内Statistics
标题[程式] SAS如何自动取五分钟为一笔资料
时间Wed Feb 8 00:29:19 2012
------------------------------------------------------------------------
[软体程式类别]:
SAS Eview
[程式问题]:
资料处理
[软体熟悉度]:
新手
[问题叙述]:
资料型式如下:
月/日/年 时:分:秒 买价
01/04/10 0:04:58 .
01/04/10 0:04:59 1.4316
01/04/10 0:05:05 .
01/04/10 0:05:06 .
01/04/10 0:09:56 .
01/04/10 0:11:04 1.4315
01/04/12 0:10:03 .
以五分钟为基准,取最靠近每五分钟的资料,故整理完的资料为:
01/04/10 0:04:59 1.4316
01/04/10 0:09:56 .
01/04/12 0:10:03 .
因为资料需要每一笔每一笔去比较,目前构想为:
if 第i笔资料的分钟数^=第i-1笔的分钟数 then;
if 第i笔资料的分钟数为5或0结尾 then;
if 第i笔的秒数<60-第i笔的秒数 then;
取得这笔资料
end;
end;
end;
[程式范例]:
t1内的资料形式为:
01/04/10 00004 /*0:00:04 手动将帽号替除 不然好像读不进IML */
01/04/10 00005
01/04/10 00011
01/04/10 00018
以下为程式:
proc iml;
use t1 var _all_;
read all into mat;
rs=nrow(mat);
cs=ncol(mat);
k=0;
mat1=repeat('.',rs,cs);
do i=2 to rs;
if (int(mat[i,2]/100))^=(int(mat[i-1,2]/100)) then
if (int(mat[i,2]/100)-int(mat[i,2]/1000)*10)=0 or
(int(mat[i,2]/100)-int(mat[i,2]/1000)*10)=5 then/*这边好像不能用or是否有
其他替代方案?*/
if (mat[i,2]-int(mat[i,2]/100)*100)<60-(mat[i-1,2]-int(mat[i-1,2]/100)*100)
then
k=k+1;
mat1[k,1]=mat[i,1];
mat1[k,2]=mat[i,2];
mat1[k,3]=mat[i,3];
mat1[k,4]=mat[i,4];
mat1[k,5]=mat[i,5];
mat1[k,6]=mat[i,6];
mat1[k,6]=mat[i,7];
else
mat1[k,1]=mat[i-1,1];
mat1[k,2]=mat[i-1,2];
mat1[k,3]=mat[i-1,3];
mat1[k,4]=mat[i-1,4];
mat1[k,5]=mat[i-1,5];
mat1[k,6]=mat[i-1,6];
mat1[k,6]=mat[i-1,7];
;;;;
end;
print mat mat1 k rs cs;
quit;
run;
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.34.44.193
1F:→ kurtasd:刚刚想到...可使用IML吗?正在努力研究中,希望会的大大 02/08 05:51
2F:→ kurtasd:指点一下程式要怎麽写噜~ 02/08 05:52
3F:推 tew:如果是时间秒的格式 则将秒数-1後 除以300 02/08 07:35
4F:→ tew:可得整数部位和余数部位 02/08 07:37
5F:→ tew:整数部位是你的分组 余数部位最大於数的值是你要的资料 02/08 07:37
6F:→ tew:日内资料不难处理 02/08 07:38
7F:→ kurtasd:tew大,这样只能找到每分钟内最後一笔的资料吧? 02/08 10:24
8F:→ kurtasd:刚刚尝试写了IML,不过有error,一直找不出原因,更新於本文 02/08 10:25
※ 编辑: kurtasd 来自: 114.34.44.193 (02/08 10:35)
9F:推 west1996:时间的格式是哪一种? 02/08 10:34
10F:→ kurtasd:时间隔式为time8. 02/08 10:36
11F:→ gsuper:要画K线图? 02/08 21:59