【问题标题】:Stata: Having issue where large digit variable isn't being calculated correctlyStata:存在未正确计算大数字变量的问题
【发布时间】:2015-10-24 11:43:10
【问题描述】:

我正在尝试合并 stata 中的两个数据集。为了构建 1:1 匹配,我正在构建一个将年份和标识符相乘的变量。理想情况下,我希望它看起来像 2004000000023。但是,对于必须的变量,这个数字出现的数字大不相同(例如 year = 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

谢谢!

【问题讨论】:

    标签: variables merge format stata


    【解决方案1】:

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

    但是为什么要将字符串转换为数字呢?创建一个带有年份的字符串,并将其连接到 gvkey 以生成一个字符串标识符。

    但是为什么要将 year 和 gvkey 组合成一个变量呢?我认为您误解了 1:1 比赛的含义。你的合并语句可以写成

    merge 1:1 year gvkey ...
    

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

    【讨论】:

    • 很好的建议。阅读search precision 找到的资源对于充分理解是必不可少的。假设更改显示格式会对更改存储的内容产生任何影响是不正确的,这是stata-journal.com/article.html?article=dm0067 解决的一个误解,例如,假设您选择了一个小数点后的格式;如果这改变了存储的内容,那么将舍入更改为小数点后 2 位将是不可能的,但事实并非如此。此外,显示格式通常是十进制的,但 Stata 必须使用二进制表示进行存储。
    猜你喜欢
    • 2023-03-07
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多