Sas分组字符串

Sas分组字符串,sas,Sas,我有一个数据集,它包括近6000个观测值,看起来像这样 Id mark 134663 000 134663 000 134663 000 134665 101 134665 111 134665 101 134973 000 134973 000 134973 100 此数据集上的标记是字符串,由mark=mark1!!马克2!!马克3 我想做的是按id对这个数据集进行分组,mark应该是其中最大的一个 . 最后应该是这样的

我有一个数据集,它包括近6000个观测值,看起来像这样

Id        mark
134663    000
134663    000
134663    000
134665    101
134665    111
134665    101
134973    000
134973    000
134973    100
此数据集上的标记是字符串,由mark=mark1!!马克2!!马克3 我想做的是按id对这个数据集进行分组,mark应该是其中最大的一个 . 最后应该是这样的

id      mark
134663  000
134665  111
134973  100
我尝试了不同的方法,但都做不到。我希望我说清楚了。如果你们能解决这个问题,那就太棒了
谢谢,

您可以使用PROC SUMMARY IDGROUP查找每个ID的最大标记

data mark;
   input (id mark)(:$6. :$3.);
   cards;
134663    000
134663    000
134663    000
134665    101
134665    111
134665    101
134973    000
134973    000
134973    100
;;;;
   run;
proc print;
   run;
proc summary data=mark nway;
   class id;
   output out=maxmark(drop=_:) idgroup(max(mark) out(mark)=);
   run;
proc print;
   run;

您可以使用PROC SUMMARY IDGROUP查找每个ID的最大标记

data mark;
   input (id mark)(:$6. :$3.);
   cards;
134663    000
134663    000
134663    000
134665    101
134665    111
134665    101
134973    000
134973    000
134973    100
;;;;
   run;
proc print;
   run;
proc summary data=mark nway;
   class id;
   output out=maxmark(drop=_:) idgroup(max(mark) out(mark)=);
   run;
proc print;
   run;

也尝试使用proc sql:

   proc sql;
      select distinct * from mark group by id having mark=max(mark);
   quit;

还可以尝试使用proc sql:

   proc sql;
      select distinct * from mark group by id having mark=max(mark);
   quit;

mark
是字符列还是数字列?谢谢,我根据它的创建方式假设它是字符列还是数字列,但最好澄清一下。我会使用与@data null相同的方法,如果所有记录(在您的示例中为3)的字符长度都相同,那么@data null的工作方式就是
mark
一个字符或数字列?谢谢,我根据它的创建方式假设它会是,但最好澄清一下。我将使用与@data null相同的方法,如果所有记录的字符长度相同(在您的示例中为3),则该方法有效