目前我的代码为:gen lateFirms = 1 if firmage0 != .
所以目前我得到的数据集看起来像这样:
firm_id lateFirms firmage0
1
1
1
1
1
3
3
3
3
3
4
4
4
4
4
5
5
6 1 110
6
6
6
6
7
7
7
7
7
8 1 90
8
8
8
8
但我想要的是:
firm_id lateFirms firmage0
1
1
1
1
1
3
3
3
3
3
4
4
4
4
4
5
5
6 1 110
6 1
6 1
6 1
6 1
7
7
7
7
7
8 1 90
8 1
8 1
8 1
8 1
注意:所有空白条目都缺少数值!
因此,如果“lateFirms
”存在一个firm_id
不是缺失值的观察值,那么“firmage0
”应该等于1。
答案 0 :(得分:1)
bysort firm_id : egen present = count(firmage0)
replace lateFirms = present > 0
count()
egen
函数计算非缺失并将计数分配给每个公司的所有值。
答案 1 :(得分:0)
也许这会有所帮助:
bysort firm_id: gen dum = 1 if sum(firmage0) != 0
要准确得到您想要的内容,您可以使用replace
代替generate
:
bysort firm_id: replace lateFirms = 1 if sum(firmage0) != 0
正如@NickCox所指出的,此解决方案特定于您提供的示例数据集。