Sas分组字符串
我有一个数据集,它包括近6000个观测值,看起来像这样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应该是其中最大的一个 . 最后应该是这样的
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),则该方法有效