全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2811 4
2014-05-20
变量A有N个观测值(数值型),我想得到一个新的变量B,使得B为A的当前观测值的最小值。
比如A有10个值,那么B1=A1;B2=min(of A1-A2),.....B9=min(of A1-A9),B10=min(of A1-A10).
请问如何实现?应该有相应的function吧?请提点一下小弟,感激涕零。
二维码

扫码加我 拉你入群

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

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

全部回复
2014-5-20 22:51:39
复制代码
二维码

扫码加我 拉你入群

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

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

2014-5-21 08:35:12
data a;
input a @@;
cards;
7 3 6 8 9 2 10 7 8 4
;

proc sql noprint;
select count(*) into: nobs
from a;
quit;

%macro sltmin;
%let n=%eval(&nobs-1);
data b;
set a;
b1=lag(a);
%do i=2 %to &n;
  b&i=lag&i(a);
%end;
b=min(of a -- b&n);
keep a b;
run;
%mend;
%sltmin
二维码

扫码加我 拉你入群

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

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

2014-5-21 09:05:37
data b;
   set a;
   retain b;
   b=min(a,b);
run;
二维码

扫码加我 拉你入群

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

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

2014-5-21 09:30:06
两种算法,一种是按照排序的算法,不过只是用两值比较后最小值跟下一个比较,遍历一次。用data step的array做。
第二种是用sql的cartesian来做。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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