全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1280 5
2013-03-17
悬赏 50 个论坛币 已解决
如题,求帮助,我想慎用output,以加快SAS的运行速度。目的是在一系列输出观测中取某变量最小的那个值。谢谢。

data a;
do i=100,80,70,60,50,60;
if ?? then output;  *??:如果是第一条观测,继续;如果不是,则和第一条观测相比,留下值最小的那条观测;
end;
run;

最佳答案

Imasasor 查看完整内容

data test; do i=1 to 100; a=10*uniform(1); output; end; run; proc sql; select min(a) from test; quit; 以上为测试 以下为代码 data a(drop=a i rename=(c=a)); retain c; do i=1 to 100; a=10*uniform(1); if i=1 then c=a; if a
二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-17 20:05:34
data test;
do i=1 to 100;
a=10*uniform(1);
output;
end;
run;
proc sql;
select min(a) from test;
quit;
以上为测试


以下为代码

data a(drop=a i rename=(c=a));
retain c;
do i=1 to 100;
a=10*uniform(1);
if i=1 then c=a;
if a<c then c=a;
end;
put c=;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-17 20:45:23
data a;
j=constant('big');
do i=100,80,70,60,50,60;
if i<j then j=i;
end;
i=j;
drop j;
run;


二维码

扫码加我 拉你入群

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

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

2013-3-17 21:45:30
data a;
retain x;
do i=100,80,70,60,50,60;
x=min(x,i);
end;
i=x;
keep i;
run;
proc print;
run;
二维码

扫码加我 拉你入群

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

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

2013-3-20 16:02:01
假设你要处理的变量时var1;
proc sort data=mydata;/*按照你的变量的大小排序*/
by var1;
run;
data data_new;
set mydata;
by var1;
if first.var1;      /*选出var1值最小的那个*/
run;
这样不就可以了么?
如果你是要选出某个组别中较小的,by var1改成:by groupname var1;就ok了
二维码

扫码加我 拉你入群

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

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

2013-7-31 17:37:07
mark
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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