Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SAS中查找具有最大值的记录_Sas - Fatal编程技术网

在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

如何在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 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;

谢谢这正是我所需要的-工作完美