0

これはおそらく非常に単純な質問ですが、私には理解できません。各行がその人の固有の結果であるデータがあります。データセット内の人はすべて一意の識別子 (一意の ID) を持っています。

その人物がデータに最初に表示される日付である新しい列に、2 番目の (一意ではない) 識別子 (日付 ID) を作成したいと考えています。これをStataでやりたいのですが、無理ならExcelでもいいと思います。

たとえば、私は持っています:

Unique ID       Date    Outcome
   1          1/1/2000     A
   2          2/11/2003    B
   2          2/12/2003    B
   2          3/6/2004     A
   3          4/4/1997     A
   3          8/11/2011    A
   4          9/16/1995    B
   4          9/17/1995    B
   4          9/18/1995    C
   4          9/19/1995    E
   4          9/20/1995    A
   4          2/17/1996    A
   4          9/16/1996    A
   4          9/17/1996    B
   5          10/16/1995   C
   5          10/17/2005   C
   5          12/31/2008   A

私が欲しい:

Unique ID       Date    Outcome           Date ID
   1          1/1/2000     A             1/1/2000
   2          2/11/2003    B             2/11/2003
   2          2/12/2003    B             2/11/2003
   2          3/6/2004     A             2/11/2003
   3          4/4/1997     A             4/4/1997
   3          8/11/2011    A             4/4/1997
   4          9/16/1995    B             9/16/1995
   4          9/17/1995    B             9/16/1995
   4          9/18/1995    C             9/16/1995
   4          9/19/1995    E             9/16/1995
   4          9/20/1995    A             9/16/1995
   4          2/17/1996    A             9/16/1995
   4          9/16/1996    A             9/16/1995
   4          9/17/1996    B             9/16/1995
   5          10/16/1995   C             10/16/1995
   5          10/17/2005   C             10/16/1995
   5          12/31/2008   A             10/16/1995
4

2 に答える 2

2

より直接的な1行のソリューションは

bysort unique_id (date) : gen date_id = date[1] 

replace関数ではなく、コマンドであることに注意してください。search byのチュートリアルへの参照を取得しますby:

于 2012-12-01T23:44:48.707 に答える
0

これは最も効率的な方法ではないかもしれませんが、私はそれを理解しました:

最初に、各個人がデータに含まれていた回数をカウントするカウンターを作成しました

sort unique_id
by unique_id: gen individual_counter = _n

次に、このカウンターを使用して、個人がデータに含まれる最初の日付、または欠損値「.」である新しい変数を作成しました。

gen date_id = date if individual_counter == 1

最後に、replace 関数を使用して、上記の欠損値 (つまり、リストの最初の日) を置き換えました。

replace date_id = date_id[_n-1] if date_id >= . 
于 2012-12-01T19:21:56.680 に答える