1

欠落している値を、他の列からの同等性に応じて、同じ列の値に置き換えようとしています:

私は、さまざまな業界や国、さまざまな年のさまざまな会社を持っています。以下はほんの一例です。欠落している値 (列の業界または国) を列の既存の値に置き換えたいと思います (それらが同じ会社のものである場合)。

たとえば、会社 123 は 2 年目の業界がありません。前の年 (または次の年) からその会社が属している業界がありますが、それを追加する方法がわかりません。

別の例: 私は会社 444 を持っていますが、これは 3 年目に国がありません。私は前の年からその国を持っていますが、それを 3 年目に転送/コピーする方法がわかりません:

 --firm--year--industry--country

 --123----1-------1---------usa

 --123----2-------1---------usa

 --123----3--------.--------usa

 --333----1-------2---------usa

 --333----2--------.---------usa

 --444---1---------.----------fr

 --444---2---------2---------fr

 --444---3---------2----------.

私はstata / helpとインターネットで調べました。私が見つけたのはreplaceコマンドだけでしたが、同じ数しか置き換えられませんでした.

私はそれが何かになると思います:

replace industry=(problaby something dependant of the firm (and maybe year))  if industry==.

replace country=(problaby something dependant of the firm (and maybe year))  if country==.

観測値は数値ではないため、国の置換についてはわかりません。国を置き換えるための数値を含む新しい変数を生成する必要があると思います。

どうもありがとう!

4

2 に答える 2

0

業界変数が企業内で同じであるこの特定の例では、次のように書くこともできます

levelsof firm, local(F)
foreach f of local F{
sum industry if firm==`f'
replace industry=r(mean) if firm==`f' & industry==.
}

このコードは、すべての異なる会社のリストであるローカル変数 F を作成します。次に、各企業の業界を要約します。業界番号は、同じ企業からの観測に対して常に同じであるため、平均値は業界番号になります。次に、コードは、industry の値を、その企業内のすべての観測値に対してこの数値に置き換えます (ここでコードの「& industry==.」の部分を省略しても、同じように機能します)。

于 2016-01-18T18:04:56.597 に答える