楼主: Tigflanker
1309 5

如何留下较小观测 [推广有奖]

  • 8关注
  • 18粉丝

副教授

49%

还不是VIP/贵宾

-

威望
0
论坛币
2321 个
通用积分
9.9128
学术水平
179 点
热心指数
194 点
信用等级
167 点
经验
27443 点
帖子
622
精华
0
在线时间
851 小时
注册时间
2011-3-27
最后登录
2023-5-14

楼主
Tigflanker 发表于 2013-3-17 20:05:33 |AI写论文
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
关键词:output outpu Data Then sas的 如何
Bye SAS.
若有缘,能重聚。

沙发
Imasasor 发表于 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;
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
ziyenano 发表于 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;


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 感谢,新学到的方法

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

板凳
farmman60 发表于 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;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 感谢~

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

报纸
luckycai 在职认证  发表于 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了
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Tigflanker + 1 + 1 + 1 感谢,我考虑sort效率会低

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
jolterheadmmtt 发表于 2013-7-31 17:37:07
mark

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 10:17