过去的变量的值机Stata的数据集(Conditioning Stata dataset on pa

2019-10-30 03:25发布

我有空调有问题的数据集我有Stata的。 基本上我想调节数据集中的存在-within的针对其执行某一动作(由可变所指示的)上的另一变量的过去值的观测一定的基团 - 。 因此,让我们假设我有以下

obs | id | action1 | action2 | year 1 | 1 | 1 | 0 | 2000 2 | 1 | 0 | 1 | 2001 3 | 1 | 0 | 1 | 2002 4 | 1 | 0 | 1 | 2002 5 | 1 | 0 | 1 | 2003 6 | 2 | 1 | 0 | 2000 7 | 2 | 1 | 0 | 2001 8 | 2 | 0 | 1 | 2002 9 | 2 | 0 | 1 | 2002 10 | 2 | 0 | 1 | 2003

而对于通过“ID”我想保持只有在执行动作1的观察或是否已执行1动作之前动作1已执行不早超过2年确定的每一组。 在该简化示例仅观测4应予删除。 请注意,2个举动不是相互排斥的,它们可以在同一年度内,因此在过去的2个观察值期待并不一定意味着看2年过去进行一次以上。

这我不能落实代码中的解决办法是:创act1year =动作1 *年再由(ID)存储act1year时,他们从0地方不同的值(我不能够实现这一点),然后通过(ID)保持如果动作1 = 1,或者如果动作2 [_n] = 1和范围年[_n]至一年[_n] -2包含在先前存储的变量中的值中的至少一个。

我大概知道我的建议是不要去最简单的方法,仍然我不能够实现它,可惜我不能设法找到帮我做这个代码。 希望您能够帮助我。 谢谢

弗朗切斯科

Answer 1:

下面假设某些事情。

clear
set more off

input ///
obs  id  action1  action2  year 
1  1  1  0  2000 
2  1  0  1  2001 
3  1  0  1  2002 
4  1  0  1  2003 
5  2  1  0  2000 
6  2  0  1  2001 
7  2  1  0  2002 
8  2  0  1  2003
end

list, sepby(id)

*-----

bysort id (year) : keep if action1 | (action1[_n-1] + action1[_n-2] > 0)

list, sepby(id)

什么是括号之间的计算结果为一个或零取决于不平等是否分别是真还是假。 此片段表明,如果行动1拍摄无论是在前面的两个意见。

你需要决定做什么与前两种意见,因为他们不能正好用两个以前的观察(不存在)进行比较。 在下面的例子中,他们始终保持,因为一个不存在的观察在这种情况下比较意味着添加缺失值,这会导致丢失。 一个缺失被认为是Stata的一个非常大的数字。

您也可以以时间系列运营商合作( help tsvarlisthelp xtset )和真正尊重时间变量。 在这里,我与前两个观察工作。 这可能会或可能不会与前两个时间点重合。

我觉得你的两个动作是互斥的,但你不明确了。



文章来源: Conditioning Stata dataset on past values of variables
标签: stata