我正在尝试使用同一列中的值替换缺失值,这取决于它们与其他列的相等性:
我有不同的公司,来自不同的行业和国家和不同年份。以下只是一个小例子。如果它们来自同一家公司,我想用列中的现有值替换缺失值(在列行业或国家/地区)。
例如,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==.
我不确定国家更换,因为观察结果不是数字。我想我需要为国家替换生成一个带有数字的新变量。
非常感谢!
答案 0 :(得分:6)
查看replacing missing values with neighboring values FAQ和用户编写的xfill
。后者对于填充静态变量很有用。它使用该群集中唯一的非缺失值替换群集中的缺失值。
答案 1 :(得分: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 ==。"部分代码,它仍将以相同的方式工作)。