使用日期的标识符

时间:2012-12-01 17:46:28

标签: date excel-2007 uniqueidentifier stata

这可能是一个非常简单的问题,但我无法弄清楚。我有数据,其中每一行都是一个人的独特结果。数据集中的人员都具有唯一标识符(唯一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

2 个答案:

答案 0 :(得分:2)

更直接的单行解决方案

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

请注意replace是一个命令,而不是一个函数。 search by获取有关by:的教程的参考。

答案 1 :(得分: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 >= .