0

目前我的代码如下: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。

4

2 回答 2

1
 bysort firm_id : egen present = count(firmage0)
 replace lateFirms = present > 0 

计数非缺失并将计数分配给每个公司的所有值的功能count()egen

于 2013-11-11T19:17:22.637 回答
0

也许这有帮助:

bysort firm_id: gen dum = 1 if sum(firmage0) != 0

为了得到你想要的,你可以使用replace而不是generate

bysort firm_id: replace lateFirms = 1 if sum(firmage0) != 0

正如@NickCox 指出的那样,此解决方案特定于您提供的示例数据集。

于 2013-11-11T19:16:40.320 回答