全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4503 12
2013-07-30
代码如下:
复制代码
需求:前缀都是x的5个变量,求每条记录的前n个相同前缀变量的最大值,例如当n=3时,则求x_1,x_2, x_3中的最大值给变量Max,当n=4时,则求x_1,x_2, x_3,x_4中的最大值给变量Max。
哪位大师可以指点一下,有点急,非常感谢!


二维码

扫码加我 拉你入群

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

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

全部回复
2013-7-30 21:47:14
复制代码
二维码

扫码加我 拉你入群

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

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

2013-7-30 21:50:03

data b;
  input x_1 x_2 x_3 x_4 x_5 n;
  datalines;
2 4 . 7 9 3
. 4 6 1 6 4
9 3 5 30 1 5
9 5 0 22 4 2
;
run;
proc sql noprint;
select max(n) into :maxn
from b;
quit;
%macro test;
data c;
set b;
if n = 1 then maxvar = x_1;
%do i = 2 %to &maxn;
    if n = &i then maxvar=max(of x_1-x_&i);
   %end;   
run;
%mend;
options mprint;
%test;
proc print;run;
二维码

扫码加我 拉你入群

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

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

2013-7-30 21:58:52
搞定了,最后那个result的表就是你要的结果,自己根据你的数据变量数来调吧

proc iml;
use b;
read all var _num_ into b;
create max_b var{max};
do i=1 to nrow(b);
n=b[i,6];
row=b[i,1:n];
max=max(row);
edit max_b;
append from max;
end;
quit;
data result;
merge b max_b;
run;
二维码

扫码加我 拉你入群

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

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

2013-7-30 22:20:35
yongyitian 发表于 2013-7-30 21:47
哇塞,你这个方法好巧妙啊!鼓掌!
二维码

扫码加我 拉你入群

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

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

2013-7-31 03:08:28
复制代码
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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