使用 Stata 扩展连续和

用户42459

我有一个面板。每个ID都是一个人。

如果一个人的 A 状态从 1 变为 0,则 loss_A 为 1。

我只有 ID、年份、A、lose_A 和 A_upgrade。

我想制作长度和长度2。

长度只是 A 的连续 1 的数量。

length2 是相似的,但只有一个区别:它在 A_upgrade 为 1 的那一年之后立即回到 1。

ID year  A  lose_A  A_upgrade   length  length2
1  3     1    1       0           1        1
1  4     0    0       0           0        0
1  5     1    0       0           1        1
1  6     1    0       1           2        2
1  7     1    0       0           3        1
2  4     0    0       0           0        0
2  5     1    0       0           1        1
2  6     1    0       0           2        2
2  7     0    1       0           0        0

我做了

bysort ID (year): gen sumA=sum(A)

作为长度和长度2的垫脚石。但我不知道接下来要做什么。

尼克考克斯

感谢您提供明确的问题和数据示例。

这里的主要思想是认为您的主要变量为 1 的法术或运行。因此您将问题分为(1)为每种法术的开始创建标记和(2)在每个法术中向上计数。

http://www.stata-journal.com/sjpdf.html?articlenum=dm0029 中有更多讨论

dm0029tsspell(SSC 上的一个程序)是其他不可预测的搜索词,可以在 Statalist 上找到许多相关帖子。

clear 
input ID year  A  lose_A  A_upgrade   length  length2
1  3     1    1       0           1        1
1  4     0    0       0           0        0
1  5     1    0       0           1        1
1  6     1    0       1           2        2
1  7     1    0       0           3        1
2  4     0    0       0           0        0
2  5     1    0       0           1        1
2  6     1    0       0           2        2
2  7     0    1       0           0        0
end 

* start of each spell is 1, others 0 
bysort ID (year) : gen Length = A == 1 & (_n == 1 | A[_n-1] == 0) 

* count 2, 3, ... within spells 
by ID : replace Length = Length[_n-1] + 1 if A == 1 & Length == 0 

* second variable is a twist on the first 
bysort ID (year) : gen Length2 = A == 1 & (_n == 1 | A[_n-1] == 0 | A_upgrade[_n-1] == 1) 
by ID : replace Length2 = Length2[_n-1] + 1 if A == 1 & Length2 == 0 

list, sepby(ID) 

     +-------------------------------------------------------------------------+
     | ID   year   A   lose_A   A_upgr~e   length   length2   Length   Length2 |
     |-------------------------------------------------------------------------|
  1. |  1      3   1        1          0        1         1        1         1 |
  2. |  1      4   0        0          0        0         0        0         0 |
  3. |  1      5   1        0          0        1         1        1         1 |
  4. |  1      6   1        0          1        2         2        2         2 |
  5. |  1      7   1        0          0        3         1        3         1 |
     |-------------------------------------------------------------------------|
  6. |  2      4   0        0          0        0         0        0         0 |
  7. |  2      5   1        0          0        1         1        1         1 |
  8. |  2      6   1        0          0        2         2        2         2 |
  9. |  2      7   0        1          0        0         0        0         0 |
     +-------------------------------------------------------------------------+

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Stata:使用循环来保留和重整变量的子集

来自分类Dev

Hadoop和Stata

来自分类Dev

Stata和命名管道

来自分类Dev

如何在Stata中使用*?

来自分类Dev

Stata:使用局部变量在Stata中构建程序

来自分类Dev

使用forvalues遍历Stata中的降序值

来自分类Dev

Stata:使用重复变量定界的导入

来自分类Dev

使用Stata了解混合效果模型的代码

来自分类Dev

Stata:使用重复变量定界的导入

来自分类Dev

在Stata中使用Boxcox模型进行预测

来自分类Dev

在Stata中使用均值vs均值

来自分类Dev

使用mkdir的Stata可移植代码

来自分类Dev

使用索引的Stata中的Reg命令

来自分类Dev

使用Stata的双向灵敏度图

来自分类Dev

在Stata中基于非连续ID创建连续ID

来自分类Dev

在Stata中基于非连续ID创建连续ID

来自分类Dev

熊猫和Stata 13文件

来自分类Dev

if和else语句均在Stata中执行

来自分类Dev

将headings()和rename()与coefplot(Stata)组合

来自分类Dev

ARIMA在R和Stata之间的主要差异

来自分类Dev

ARIMA在R和Stata之间的主要差异

来自分类Dev

stata和libpng的棘手问题

来自分类Dev

Stata:计算预定义长度的连续出现次数

来自分类Dev

如何使用tsrevar使用stata创建滞后变量

来自分类Dev

在Stata中使用循环生成变量总和

来自分类Dev

错误:在Stata中使用nlcom“超出了最大迭代次数”

来自分类Dev

Stata:使用egen group()创建唯一标识符

来自分类Dev

使用本地人在Stata中构建路径

来自分类Dev

使用Rstudio作为其他编程语言的IDE(Stata)