私のデータは次のようになります。
ID YEAR A B
1078 1989 1 0
1078 1999 1 1
1161 1969 0 0
1161 2002 1 1
1230 1995 0 0
1230 2002 0 1
1279 1996 0 0
1279 2003 0 1
1447 1993 1 0
1447 2001 1 1
1487 1967 0 0
1487 2008 1 1
1487 2008 1 0
1487 2009 0 1
1678 1979 1 0
1678 2002 1 1
1690 1989 1 0
1690 1993 0 1
1690 1993 0 0
1690 1996 0 1
1690 1996 0 0
1690 1997 1 1
2 つのダミー変数 new と X を作成したいと思います。シナリオは次のとおりです。各 ID-B ペア内 (ペアは 2 つの観測値でB=0
あり、一方B=1
がYEAR
クローゼットで、もう一方がクローゼットで順番に一緒になっています)
- の観測
B=1
値が A の値が 1 の場合new=1
、そのペアの両方の観測値に対して、それ以外の場合は、そのペアの両方の観測値に対して 0 です。 - ペアの A の値が同じ場合、
X=0
値が異なる場合はX=1
.
したがって、出力は次のようになります。
ID YEAR A B new X
1078 1989 1 0 1 0
1078 1999 1 1 1 0
1161 1969 0 0 1 1
1161 2002 1 1 1 1
1230 1995 0 0 0 0
1230 2002 0 1 0 0
1279 1996 0 0 0 0
1279 2003 0 1 0 0
1447 1993 1 0 1 1
1447 2001 1 1 1 1
1487 1967 0 0 1 1
1487 2008 1 1 1 1
1487 2008 1 0 0 1
1487 2009 0 1 0 1
1678 1979 1 0 1 0
1678 2002 1 1 1 0
1690 1989 1 0 0 1
1690 1993 0 1 0 1
1690 1993 0 0 0 0
1690 1996 0 1 0 0
1690 1996 0 0 1 1
1690 1997 1 1 1 1
私のコードは
data want;
set have;
by ID;
if B=1 and A=1 then new=1;
else new=0;
run;
proc sql;
create table out as
select a.*,max(a.B=a.A & a.B=1) as new,^(min(A)=max(A)) as X
from have a
group by ID;quit;
最初のものは機能せず、2 番目のものは変数 B を並べ替えました。ここで立ち往生しています。どんな助けでも大歓迎です。