我想标记新的出现agent_type
。我用下面的代码来做到这一点:egen标记跳过
clear
input long patid float(how_many_drugs agent_type eventdate) byte tag4
01 3 4 14962 1
01 3 5 14962 1
01 3 4 14997 0
01 3 9 14997 0
01 3 5 15025 0
01 3 9 15040 1
01 3 4 15040 0
01 3 5 15082 0
end
format %td eventdate
label values agent_type drugstypes1
label def drugstypes1 4 "alpha blocker", modify
label def drugstypes1 5 "ace_inhib", modify
label def drugstypes1 9 "loop", modify
label def drugstypes1 13 "CCB", modify
egen tag4=tag (patid agent_type_new how_many_drugs)
的代码工作正常,直到我们到达那里不会产生标签“循环”中第一次出现。而是在第二次出现“循环”时生成标签。
为什么会发生这种情况,我怎样才能使它在第一次出现时生成标签?
在运行标签代码之前,我已确保数据按patid event_date
排序。
谢谢@NickCox。你是对的,“how_many_drugs”是多余的。感谢您解释egen标签背后的工作 – user2363642
请注意,对于'egen'的帮助和手动输入甚至没有提到第一次出现!也许你从经验上观察到,第一次出现的实际情况通常是那些被标记的。从1999年开始的http://www.stata.com/products/stb/journals/stb50.pdf(见第16页)的原始讨论讨论了代码逻辑,如上所述。本文在手册条目中引用,但对理解'egen'不重要。 –
是的,我确实注意到,在大多数情况下,第一次出现被标记 - 然后当我尝试以几种不同的方式运行时,我不能在不同的时间出现不同的标签。第一次出现我的错误。再次感谢您指出我的错误。希望别人也从中学习。 – user2363642