如何随着(虚拟)变量的变化创建新变量

时间:2019-06-11 09:07:15

标签: if-statement stata

我拥有三年的公司级别数据(201520162017)。

我需要知道哪些公司的虚拟变量ModelJaarrekening2016年到2017年都有变化-确定公司是否较大的虚拟变量(值{{1 }})或较小(值2)。

换句话说,我需要选择1ModelJaarrekening年中2的值为2015但值{{1}的公司}在2016年。

以下命令不起作用:

1

我认为这是因为它首先执行第一个命令并删除其他观察结果。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您的命令是合法的。

它不会删除任何观察结果!

它只是不执行您想要的操作。原因是语法中没有任何内容指示Stata单独查看每个观察结果。因此,

ModelJaarrekening == 2 & ModelJaarrekening == 1

在任何观察中都不会成立:同一观察中的变量不能为1和2。

也存在同样的问题
year < 2017 & year == 2017

结果是您的指标将缺少所有值。

您想要的更像是这样。我假定一个公司标识符id

local foo ModelJaarrekening
egen OK1 = total(`foo' == 2 & year <= 2017), by(id) 
egen OK2 = total(`foo' == 1 & year == 2017), by(id) 
gen wanted = OK1 & OK2 

然后,OK1将等于或大于1,前提是且仅当在2017年之前值为2时。而当且仅当每个公司2017年的值为1时,OK2才会为1。

wanted当且仅当其两个参数都为非零时才为1(在这种情况下,负值是不可能的,只有正值才可计数);否则为0。 因此,它是一个值为1和0的指标(您说是虚拟的)。

在Stata中,值为1或缺失的指示符不如值为1或0的指示符有用。