egen标签跳过

时间:2017-02-28 12:54:51

标签: tags stata

我想标记新public class MorphiaClient { public static void main(String[] args) { final Morphia morphia = new Morphia(); morphia.mapPackage("org.mongodb.morphia"); final Datastore datastore = morphia.createDatastore(new MongoClient(), "test"); Input input = new Input(); input.setName("name"); input.setDate(new Date()); datastore.save(input); } 的新出现次数。我使用以下代码执行此操作:

agent_type

代码工作正常,直到我们第一次出现"循环"其中未生成标记的位置。而是在第二次出现" loop"时生成标签。

为什么会发生这种情况?如何让它在首次出现时制作标签?

我确保在运行代码之前数据按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) 排序。

2 个答案:

答案 0 :(得分:1)

作为此egen函数tag()的原作者,我可以评论其意图。

目的不是标记第一次出现。目的是仅标记多个事件中的一个,就用户而言是等效的。

实际上,只有两种系统方法可以标记等效事件,标记第一个或最后一个。由于群体可以像一个观察一样小,任何规则都必须适用于小群体。对于一组,选择第一组与选择最后一组相同,但不是这样。我选择在原始代码中标记第一个(很久以来被采用到官方Stata中),但这是任意的。

为什么会发生这种情况?该功能可以完全自由地对数据进行临时重新排序,因为查看代码会显示:

viewsource _gtag.ado

这就是咬人的。

您希望为每位患者标记每种药物类型的每个不同值的第一次出现。这是一行,如底部。我不明白为什么在您的代码中使用how_many_drugs

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

bysort patid agent_type (eventdate) : gen first = _n == 1 

答案 1 :(得分:0)

我已经玩了一段时间了,最​​后放弃了egen tag()。我无法理解为什么它不会发现每个agent_type的第一次出现,所以我选择了这个:

bys patid agent_type (eventdate): gen n=_n
sort patid eventdate
replace n=0 if n!=1