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 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

7

查看用相邻值替换缺失值常见问题解答和用户编写的xfill. 后者对于填充静态变量很有用。它将集群中的缺失值替换为该集群中唯一的非缺失值。

于 2013-07-22T17:32:16.983 回答
0

对于这个行业变量在公司内部相同的特定示例,您还可以编写

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

此代码创建一个局部变量 F,它是所有不同公司的列表。然后它总结了每个公司的行业。由于来自同一家公司的观察的行业编号总是相同的,因此平均值将只是行业编号。然后,该代码将行业的价值替换为该公司内所有观察值的该数字(您可以在此处省略代码的“&行业==。”部分,它仍然可以以相同的方式工作)。

于 2016-01-18T18:04:56.597 回答