【问题标题】:Variable recording event incrementally (no loops)增量记录事件(无循环)
【发布时间】:2017-04-08 16:03:51
【问题描述】:

我有这种结构(IDEvent):

ID    Event    X
A       0      0
A       0      0
A       1      1
A       0      1
B       0      0
B       1      1
B       0      1
B       1      2
B       0      2
B       0      2
B       1      3

我想创建X,但我不能使用任何循环,因为数据库很大。如有任何建议,我将不胜感激。

编辑:我尝试了一些 bysort IDEvent 没有运气:现在我正在使用这种方法:

gen Spell=Event 

replace Spell=2 if Spell[_n-1]==1 & Spell[_n+1]==0 & ID[_n]==ID[_n-1]

但它不起作用,因为我无法区分数据库上显示的第二个或第三个 + 事件。

已解决

gen X=Event[_n]
replace X=X[_n]+X[_n-1] if _n>1 & ID[_n]==ID[_n-1]

【问题讨论】:

  • 欢迎来到 SO!你试过什么了?请编辑您的问题以显示您尝试的代码。

标签: matrix stata


【解决方案1】:

像这样的数据集需要时间或其他序列变量。如果您没有,您当然应该创建一个:

sort ID, stable 
by ID : gen t = _n 

你想要的只是

bysort ID (t) : gen wanted = sum(event) 

这比你拥有的更干净、更清晰。在Stata中

help sum() 
search by 
search spell 

查看相关帮助文件和说明性文章。

(您知道这种方法,但由于您没有准确显示您尝试过的内容,因此我们无法评论其中的错误。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多