如果条件是为了观察而实现的,而是为了另一个变量的值

时间:2013-11-11 19:00:43

标签: stata

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

2 个答案:

答案 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所指出的,此解决方案特定于您提供的示例数据集。