我有一个CASE_ID(x y和z)的数据集,每个CASE_ID的一组多个日期(包括重复日期)和一个变量VAR。我想在一个组内按组创建一个虚拟变量DUMMYVAR,如果VAR =" C"对于某个特定日期的CASE_ID x,然后对于与该日期相对应的CASE_ID x的所有观察,DUMMYVAR = 1。
我相信Classic 2XDOW将成为关键,但这是我使用SAS的第三周,并且难以通过两个BY组来获得这个。
我参考并尝试在此处编写海科代码的变体:
PROC SORT have;
by CASE_ID DATE;
RUN;
data want;
do until (last.DATE);
set HAVE;
by date notsorted;
if var='c' then DUMMYVAR=1;
do until (last.DATE);
set HAVE;
by DATE notsorted;
if DATE=1 then ????????
end;
run;
答案 0 :(得分:0)
更改您的BY语句以匹配您正在执行的分组。在第二个循环中添加一个简单的OUTPUT;
语句。然后,您的新数据集将包含原始数据集中的所有行和新变量DUMMYVAR。
data want;
do until (last.DATE);
set HAVE;
by case_id date;
if var='c' then DUMMYVAR=1;
end;
do until (last.DATE);
set HAVE;
by case_id date;
output;
end;
run;
这将创建值为1或缺失的变量DUMMYVAR。如果您希望值为1或0,则可以在第一个DO循环之前将其设置为0。或者在现有的IF语句之前添加if first.date then dummyvar=0;
语句。