Date 按每个受试者的最早日期分组SAS数据集
我试图根据每个特定主题的最早事件实例检索SAS数据集的子集。 以下是一个示例数据集:Date 按每个受试者的最早日期分组SAS数据集,date,sas,Date,Sas,我试图根据每个特定主题的最早事件实例检索SAS数据集的子集。 以下是一个示例数据集: subject date 001 12/22/2009 001 01/14/2016 001 03/20/2014 002 02/12/2007 002 01/23/2015 我只想要以下几点: subject date 001 12/22/2009 002 02/12/2007 通过先处理来使用。
subject date
001 12/22/2009
001 01/14/2016
001 03/20/2014
002 02/12/2007
002 01/23/2015
我只想要以下几点:
subject date
001 12/22/2009
002 02/12/2007
通过先处理
来使用。
:
/* sort into order */
proc sort data=have ;
by subject date ;
run ;
/* Take 1st record per subject (i.e. earliest date) */
data want ;
set have ;
by subject ;
if first.subject ;
run ;
/*整理*/
proc sort data=have;
受试日期;
跑
/*每个受试者第一次记录(即最早日期)*/
数据需求;
集有;
按科目划分;
如果是第一个主题;
跑
通过先处理
来使用。
:
/* sort into order */
proc sort data=have ;
by subject date ;
run ;
/* Take 1st record per subject (i.e. earliest date) */
data want ;
set have ;
by subject ;
if first.subject ;
run ;
/*整理*/
proc sort data=have;
受试日期;
跑
/*每个受试者第一次记录(即最早日期)*/
数据需求;
集有;
按科目划分;
如果是第一个主题;
跑
通过procsql,您可以如下所示
proc sql;
create table want as
select * from have
group by subject
having date=min(date);
或者你可以使用proc方法
proc means data=have nway;
class subject;
var date;
output out=want(keep =id date) min(date) =date;
run;
通过procsql,您可以如下所示
proc sql;
create table want as
select * from have
group by subject
having date=min(date);
或者你可以使用proc方法
proc means data=have nway;
class subject;
var date;
output out=want(keep =id date) min(date) =date;
run;
PROC意味着@Kiran中的示例将是我的首选方法,稍微修改一下,以便在OUTPUT语句中使用IDGROUP选项。它的工作原理与“选择的解决方案”基本相同,但不需要排序。我将日期变量修改为iso8601字符格式,以显示IDGROUP也支持字符变量
data have;
infile cards firstobs=2;
input subject:$3. date:mmddyy.;
dtc = put(date,yymmdd10.);
random = ranuni(134);
format date date9.;
cards;
subject date
001 03/20/2014
002 02/12/2007
001 01/14/2016
001 12/22/2009
002 01/23/2015
;;;;
run;
proc print;
run;
proc summary data=have nway;
class subject;
output out=want(drop=_type_) idgroup(min(dtc) obs out(date--random)=);
run;
proc print;
run;
PROC意味着@Kiran中的示例将是我的首选方法,稍微修改一下,以便在OUTPUT语句中使用IDGROUP选项。它的工作原理与“选择的解决方案”基本相同,但不需要排序。我将日期变量修改为iso8601字符格式,以显示IDGROUP也支持字符变量
data have;
infile cards firstobs=2;
input subject:$3. date:mmddyy.;
dtc = put(date,yymmdd10.);
random = ranuni(134);
format date date9.;
cards;
subject date
001 03/20/2014
002 02/12/2007
001 01/14/2016
001 12/22/2009
002 01/23/2015
;;;;
run;
proc print;
run;
proc summary data=have nway;
class subject;
output out=want(drop=_type_) idgroup(min(dtc) obs out(date--random)=);
run;
proc print;
run;