我拥有三年的公司级别数据(2015
,2016
和2017
)。
我需要知道哪些公司的虚拟变量ModelJaarrekening
从2016
年到2017
年都有变化-确定公司是否较大的虚拟变量(值{{1 }})或较小(值2
)。
换句话说,我需要选择1
和ModelJaarrekening
年中2
的值为2015
但值{{1}的公司}在2016
年。
以下命令不起作用:
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的指示符有用。