全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3047 6
2014-11-24
data a;
input time$16. intensity;
cards;
06OCT14:07:58:00 0.43
06OCT14:07:58:01 0.45
06OCT14:07:58:02 0.49
06OCT14:07:58:03 0.51
06OCT14:07:58:04 0.53
06OCT14:07:58:05 0.53
06OCT14:07:58:06 0.54
06OCT14:07:58:07 0.34
06OCT14:07:58:08 0.54
;
run;
找出intensity几个峰值,并求相邻最大值与最小值之间的斜率,即(intensity2-intensity1)/(time2-time1),SAS如何编程,恳请高手指教!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-11-25 00:57:41
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-25 11:29:48
mingfeng07 发表于 2014-11-25 00:57
您这么晚还帮助我解决问题,非常感动也非常感谢!我受益匪浅!不过可以用lead和lag函数是不是更简洁一些,我写的程序如下:
data a;
input obs_time datetime16. intensity;
format obs_time datetime16.;
cards;
06OCT14:07:58:00 0.43
06OCT14:07:58:01 0.45
06OCT14:07:58:02 0.49
06OCT14:07:58:03 0.51
06OCT14:07:58:04 0.53
06OCT14:07:58:05 0.53
06OCT14:07:58:06 0.54
06OCT14:07:58:07 0.34
06OCT14:07:58:08 0.54
;
run;
proc expand data=a out=b method=none;

convert intensity = lead1 / transformout = (lead 1);
convert intensity = lag1 / transformout = (lag 1);
run;

data c;
set b;
if (intensity-lag1)>0 and (intensity-lead1)>0 then flag="极大值点";
if (intensity-lag1)<0 and (intensity-lead1)<0 then flag="极小值点";
if flag^='';
run;
proc sort data=c out=d;
by obs_time;
run;
data e;
set d;
slp=dif(intensity)/dif(obs_time);
run;
欢迎提宝贵建议!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-25 11:29:49
mingfeng07 发表于 2014-11-25 00:57
您这么晚还帮助我解决问题,非常感动也非常感谢!我受益匪浅!不过可以用lead和lag函数是不是更简洁一些,我写的程序如下:
data a;
input obs_time datetime16. intensity;
format obs_time datetime16.;
cards;
06OCT14:07:58:00 0.43
06OCT14:07:58:01 0.45
06OCT14:07:58:02 0.49
06OCT14:07:58:03 0.51
06OCT14:07:58:04 0.53
06OCT14:07:58:05 0.53
06OCT14:07:58:06 0.54
06OCT14:07:58:07 0.34
06OCT14:07:58:08 0.54
;
run;
proc expand data=a out=b method=none;

convert intensity = lead1 / transformout = (lead 1);
convert intensity = lag1 / transformout = (lag 1);
run;

data c;
set b;
if (intensity-lag1)>0 and (intensity-lead1)>0 then flag="极大值点";
if (intensity-lag1)<0 and (intensity-lead1)<0 then flag="极小值点";
if flag^='';
run;
proc sort data=c out=d;
by obs_time;
run;
data e;
set d;
slp=dif(intensity)/dif(obs_time);
run;
欢迎提宝贵建议!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-25 11:30:29

data a;
input obs_time datetime16. intensity;
format obs_time datetime16.;
cards;
06OCT14:07:58:00 0.43
06OCT14:07:58:01 0.45
06OCT14:07:58:02 0.49
06OCT14:07:58:03 0.51
06OCT14:07:58:04 0.53
06OCT14:07:58:05 0.53
06OCT14:07:58:06 0.54
06OCT14:07:58:07 0.34
06OCT14:07:58:08 0.54
;
run;
proc expand data=a out=b method=none;

convert intensity = lead1 / transformout = (lead 1);
convert intensity = lag1 / transformout = (lag 1);
run;

data c;
set b;
if (intensity-lag1)>0 and (intensity-lead1)>0 then flag="极大值点";
if (intensity-lag1)<0 and (intensity-lead1)<0 then flag="极小值点";
if flag^='';
run;
proc sort data=c out=d;
by obs_time;
run;
data e;
set d;
slp=dif(intensity)/dif(obs_time);
run;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-11-25 11:56:52
gotobest 发表于 2014-11-25 11:30
data a;
input obs_time datetime16. intensity;
format obs_time datetime16.;
这个不错
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群