Stata:存在大数字变量未正确计算的问题

时间:2015-10-24 11:43:11

标签: variables merge format stata

我试图在stata中合并两个数据集。为了构建1:1匹配,我构建了一个乘以年份和标识符的变量。理想情况下,我希望它看起来像2004000000023.但是,对于变量必须的数字出现了大不相同的数字(例如,年= 2000,cik = 1961产生的year_cik为1999999991808)。我试图将格式更改为%15.0f,但这并不起作用。有什么建议?我已经复制了下面的代码:

use "/Users//Desktop/Research/13D.dta", clear
gen year= year(rep_file_date)
destring company_fkey, replace
format company_fkey %15.0f
recast float company_fkey
destring year, replace
format year %15.0f
gen year_cik =.
format year_cik %15.0f
replace year_cik = company_fkey + (year * (10^9))
save "/Users//Research/13D_edited.dta", replace

use "/Users//Desktop/Research/Crosswalk.dta"
destring cik, replace
format cik %15.0f
destring fyear, replace
format fyear %15.0f
destring gvkey, replace
format gvkey %15.0f
gen year_cik = cik + (fyear * (10^9))
format year_cik %15.0f
gen year_gvkey = gvkey + (fyear * (10^8))
format year_gvkey %15.0f
save "/Users//Desktop/Research/CrossWalk_edited.dta", replace

use "/Users//Desktop/Research/Share_Retainer.dta"
destring year, replace
format year %15.0f
destring gvkey, replace
format gvkey %15.0f
gen year_gvkey = gvkey + (year * (10^8))
format year_gvkey %15.0f
save "/Users//Desktop/Research/SR_edited.dta", replace


use "/Users//Desktop/Research/13D_edited.dta"
merge 1:1 year_cik using "/Users//Desktop/Research/CrossWalk_edited.dta"
rename _merge first_merge

merge 1:1 year_gvkey using "/Users//Desktop/Research/SR_edited.dta"
rename _merge second_merge

谢谢!

1 个答案:

答案 0 :(得分:2)

您正在尝试使用比Stata更多的有效数字来构造数字。有关详细信息,请参阅help data types的结果。

但是为什么要将字符串转换为数字?使用year创建一个字符串,并将其连接到gvkey以生成字符串标识符。

但是为什么要将year和gvkey合并为一个变量?我认为你误解了1:1比赛意味着什么。您的合并声明可以写成

merge 1:1 year gvkey ...

使用两个变量作为关键。 1:1表示主数据集中的1个观察对应于使用数据集中的一个观察,并且对用作关键字的变量数没有任何影响。所需要的是year和gvkey的组合唯一地标识每个数据集中的观察结果。