0

这可能是一个非常简单的问题,但我无法弄清楚。我有数据,其中每一行都是一个人的独特结果。数据集中的人都有一个唯一标识符(Unique ID)。

我想在新列中创建第二个(非唯一)标识符(日期 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

A more direct one-line solution is

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

Note that replace is a command, not a function. search by to get a reference to a tutorial on 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

Lastly, I used the replace function to replace missing values from above (i.e., the first day listed)

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