在SAS中查找具有最大值的记录
如何在SAS中找到最大值的记录?我有一个以下结构的数据集:在SAS中查找具有最大值的记录,sas,Sas,如何在SAS中找到最大值的记录?我有一个以下结构的数据集: age name 12 joe 15 jane 3 bob 14 rick 我想找到'name'的值,其中'age'是最大值(在本例中为'jane') 我试过这个: data max; set ages_data; if age > max_age then do; max_age = age; max_name = name; end; retain max_:; keep
age name
12 joe
15 jane
3 bob
14 rick
我想找到'name'的值,其中'age'是最大值(在本例中为'jane')
我试过这个:
data max;
set ages_data;
if age > max_age then do;
max_age = age;
max_name = name;
end;
retain max_:;
keep max_:;
run;
这是基于我在这里发现的:
但这对我不起作用。。。我做错了什么
谢谢您的代码很好-但是正在输出所有记录,我想您只需要一条?尝试以下更改:
data max;
set ages_data end=lastobs; /* identify last record */
if age > max_age then do;
max_age = age;
max_name = name;
end;
retain max_:;
keep max_:;
if lastobs then output; /* only output last record */
run;
这种方法的一个缺点是,对于给定的最大年龄,它只输出name的第一个值。该年龄段可能有多个名称值。以下方法可能更适合您的目的:
proc sql;
create table max as
select name, age
from ages_data
where age= (select max(age) from ages_data);
如果有用,以下是用于测试的数据线:
data ages_data;
infile cards;
input age name $;
cards;
12 joe
15 jane
3 bob
14 rick
;run;
谢谢这正是我所需要的-工作完美