在SAS中标记满足两个条件的行

在SAS中标记满足两个条件的行,sas,Sas,我有一个大型数据集,有数百个变量和数百个观察值,来自一项临床试验。变量V1是一个是/否变量,表示某些条件。V2是数字,表示剂量。T是一个时间变量。数据集是“长”形的,每个主题都有很少的观察,每个时间点一个。对于每个主题,我想创建一个新的yes/no变量(可以在新的数据集中),如果:V1在至少一个时间点上为“yes”,或者V2在至少一个时间点上大于0,则该变量为yes。我该怎么做?谢谢。请尝试以下操作: data ds; set ds; if V1="yes" or V2>0 then do

我有一个大型数据集,有数百个变量和数百个观察值,来自一项临床试验。变量V1是一个是/否变量,表示某些条件。V2是数字,表示剂量。T是一个时间变量。数据集是“长”形的,每个主题都有很少的观察,每个时间点一个。对于每个主题,我想创建一个新的yes/no变量(可以在新的数据集中),如果:V1在至少一个时间点上为“yes”,或者V2在至少一个时间点上大于0,则该变量为yes。我该怎么做?谢谢。

请尝试以下操作:

data ds;
set ds;
if V1="yes" or V2>0 then do;
flag="yes;
end;
else do;
flag= "no";
end;
将数据集汇总到ID级别:

proc sql;
create table summary as
select ID, count(flag) as flag_cnt
from ds
where flag="yes"
group by ID;
quit;
这些是满足条件的ID请尝试以下操作:

data ds;
set ds;
if V1="yes" or V2>0 then do;
flag="yes;
end;
else do;
flag= "no";
end;
将数据集汇总到ID级别:

proc sql;
create table summary as
select ID, count(flag) as flag_cnt
from ds
where flag="yes"
group by ID;
quit;

这些ID满足以下条件

您可以提交下面示例中的代码进行验证

这里(V1=“yes”或V2>0)给出了eauch行的虚拟变量。当我们求和时,我们得到满足您提到的每个ID的条件的行数。 为了有一个标志,我们将sum与0进行比较,并将其置于()之间,以创建一个您想要的0/1变量

希望有帮助

MK


您可以提交下面示例中的代码进行验证

这里(V1=“yes”或V2>0)给出了eauch行的虚拟变量。当我们求和时,我们得到满足您提到的每个ID的条件的行数。 为了有一个标志,我们将sum与0进行比较,并将其置于()之间,以创建一个您想要的0/1变量

希望有帮助

MK


您能分享一个示例数据集和您尝试过的东西吗?乍一看,这似乎是一个“if-then-else”的实现。我不知道如何在这里添加表,所以我将以文本格式执行:变量是ID、V1、V2、V3、…、Time。V1为是/否,V2为数字。对于每个ID,我有10到10行。如果特定ID的10行中的任何一行的V1为“是”,或者,如果特定ID的10行中的任何一行的V2大于0,则此ID为“是”,否则,此ID为“否”。请共享示例数据集和您尝试过的内容?乍一看,这似乎是一个“if-then-else”的实现。我不知道如何在这里添加表,所以我将以文本格式执行:变量是ID、V1、V2、V3、…、Time。V1为是/否,V2为数字。对于每个ID,我有10到10行。如果特定ID的10行中的任何一行的V1为“是”,或者如果特定ID的10行中的任何一行的V2大于0,则该ID为“是”,否则,该ID为“否”。