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