Stata中的唯一ID变量
我正在使用面板数据,并尝试根据Stata中的唯一ID变量,stata,Stata,我正在使用面板数据,并尝试根据year和uniqueid变量合并数据集。但是,我的id变量在所有数据集中并不一致。虽然我认识到这是合并数据的基础,但我不确定如何解决这个问题 我使用的是世界各国的数据,但并非所有国家都记录在所有数据集中。对一些人来说,包括了更多的国家。目前,数据按国家编号进行排序,按字母顺序排列,每个国家都有一个Stata数值。因此,根据特定数据集中有多少国家,一些国家有不同的值。因此,当我根据每个国家的id和年份合并数据时,它们对应于不同的国家 是否有一种方法可以为每个国家分配
year
和uniqueid
变量合并数据集。但是,我的id
变量在所有数据集中并不一致。虽然我认识到这是合并数据的基础,但我不确定如何解决这个问题
我使用的是世界各国的数据,但并非所有国家都记录在所有数据集中。对一些人来说,包括了更多的国家。目前,数据按国家编号进行排序,按字母顺序排列,每个国家都有一个Stata数值。因此,根据特定数据集中有多少国家,一些国家有不同的值。因此,当我根据每个国家的id
和年份
合并数据时,它们对应于不同的国家
是否有一种方法可以为每个国家分配相同的编号,并且无论数据集中有多少个国家,都可以使此编号统一?请提供一些尝试代码,以备将来提问时参考。这里的许多用户喜欢以代码的形式查看一些研究成果 如果我理解正确,您需要做的就是将字符串
国家
和年份
一起包含在关键变量中。这对应于一个简单的合并
;没什么特别的
使用状态
而不是国家
的示例:
*clear all
set more off
*----- example using file -----
sysuse census
keep state pop
gen year = 1999 in 1/25
replace year = 2000 in 25/50
set seed 139476
gen randnum = runiform()
drop if randnum > 0.7
drop randnum
list
tempfile usingf
save "`usingf'"
*----- example main file -----
clear all
sysuse census
keep state death
gen year = 1999 in 1/25
replace year = 2000 in 2/50
set seed 139476
gen randnum = runiform()
drop if randnum > 0.5
drop randnum
list
*----- merge and keep only matching -----
merge 1:1 state year using "`usingf'", keep(match)
order state year
list
这两个文件在
年
和状态
变量中有一些匹配的观测值。后者是一个字符串变量。无需事先编码。您提到“按字母顺序”,所以我想您确实有国家名称(以字符串形式)。在不同的文件中,这些是不一样的吗?或者,您的意思是名称对应于与数字代码关联的标签?我将它们作为字符串,并将它们编码为对应于数字值。i、 e.编码变量,生成(var1)。这些字符串在数据集中是相同的。目前,我一直在使用编码变量进行合并。我的意思是,它们是按id的字母顺序排序的。也就是说,当使用排序命令时,Stata将它们按字母顺序排序。