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観測値が 1 つ存在する場合、" " は 1 になります。firmage0

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 に答える