SAS:

2016-08-16 46 views
0

内按组编码为一个变量的值的伪变量I具有CASE_ID(x和y和z),一组多个日期(包括重复日期)为每个CASE_ID中的数据集,和可变VAR。我想的基团,由此,如果VAR =在某些具体的日期,则DUMMYVAR = 1对应于CASE_ID所有观察“C”为CASE_ID X X上与该日期内创建由组虚拟变量DUMMYVAR。SAS:

我相信,一个经典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

更改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;语句。