【发布时间】:2021-10-01 04:37:43
【问题描述】:
【问题讨论】:
-
图片可以提供帮助——你的图片对于理解你的问题至关重要——但不如文本形式的代码那么好,可以复制和粘贴。
-
如果以下答案之一符合您的目的,请指定作为回答以感谢那些花时间提供帮助的人。
标签: stata
【问题讨论】:
标签: stata
如果 1 和 elec 之间的间隔总是 4 年,那么您可以使用此代码。如果不是这种情况,那么您必须向我们提供更多信息。
* Example generated by -dataex-. For more info, type help dataex
clear
input int time byte elec
2000 0
2001 1
2002 0
2003 0
2004 0
2005 1
2006 0
end
*Initiate all values to 0
gen elec1 = 0
*Replace elec1 to 1 if the values in elec two rows above and two rows below is 1
replace elec1 = 1 if elec[_n-2] == 1 & elec[_n+2] == 1
【讨论】:
这个问题有很多无法解释的地方。我是这样读的,我认为@TheIceBear 也在做同样的事情。 (感谢他们提供的数据示例:OP,请注意如何做!)
一个地区每四年举行一次选举。例如,2001 年和 2005 年举行了选举。
需要的是一个指标(又名假人),可以在选举之间的几年中进行。例如,2003 年就是这样一个。
这适用于示例。我们注意到选举年除以 4 后余数为 1。因此,通缉年数将余数为 3。
* Example generated by -dataex-. For more info, type help dataex
clear
input int time byte elec
2000 0
2001 1
2002 0
2003 0
2004 0
2005 1
2006 0
end
gen test = mod(time, 4) == 1
assert elec == test
gen wanted = mod(time, 4) == 3
list, sep(0)
+-----------------------------+
| time elec test wanted |
|-----------------------------|
1. | 2000 0 0 0 |
2. | 2001 1 1 0 |
3. | 2002 0 0 0 |
4. | 2003 0 0 1 |
5. | 2004 0 0 0 |
6. | 2005 1 1 0 |
7. | 2006 0 0 0 |
+-----------------------------+
作为测试,您可以查看 2007:
display mod(2007, 4)
请参阅 this paper 了解模数的一些用途,严格来说是余数。
在很多地方都讨论了将指标生成为真 (1) 或假 (0) 结果的直接方法,例如 this FAQ 和 this paper。
【讨论】: