0

私のデータは次のようになります。

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=1YEARクローゼットで、もう一方がクローゼットで順番に一緒になっています)

  1. の観測B=1値が A の値が 1 の場合new=1、そのペアの両方の観測値に対して、それ以外の場合は、そのペアの両方の観測値に対して 0 です。
  2. ペアの 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 を並べ替えました。ここで立ち往生しています。どんな助けでも大歓迎です。

4

2 に答える 2

1

first./last について調査する必要があります。処理とラグ機能。

ここの親切な人たちは、すでにあなたをこの時点まで導いてくれました。これを機会に、SAS のサポート サイトでドキュメントを読んでみてください。

概要:

  • ID グループ内の各観測をステップ実行するには、条件ステートメントが必要です
  • そのグループに含まれる観測値の数を調べます (N 個の観測値としましょう)
  • あなたが言及したロジックと一致するオブジェクトがある場合はフラグを立てます
  • N obs 遅れて、新しい値をそれぞれ 1 または 0 に設定します
于 2014-07-29T10:40:48.777 に答える