我觉得我在这里错过了一些非常基本的东西...
我想合并Stata,FranceSQ.dta和FranceHQ.dta中的两个数据集。他们都有一个我创建的变量,名为“uid”,用于唯一标识观察值。Stata合并改变我的价值观?
use FranceSQ, clear
merge 1:1 uid using FranceHQ, gen(_merge) keep(match)
现在令我困惑的是它告诉我uid并不能唯一地识别我的观察结果。我意识到它的发生是,当我打开FranceSQ,一切正常,当我看着自己的UID变量,我有以下值...
25010201
25010202
25010203
...
但后来当我尝试运行合并,它改变了我所有的价值观,让我看看......
2.50101e+10
2.50101e+10
2.50101e+10
...
任何帮助将是非常赞赏。我敢肯定有一个简单的答案,但它躲避我的时刻。
*** 编辑 ** *
所以尼克的咨询帮助,谢谢!这是我做错了,所以我想知道是否有人可以指出为什么它不起作用。
1)我通过连接两个数字变量在每个数据集中创建了uid变量,这两个数字变量将uid变量转换为字符串。
2)我跑整个数据集的destring(因为有很多不正确的转换变量),这使得uid变成了双精度。
3)然后我将uid重新设置为一个字符串。正是由于这一点,我无法完成最初的合并。我注意到它改变我所有观察结果的值是数据集中的最后一个值。
4)仅仅因为我在调整,我把uid变量重写为double,并且得到了相同的结果。
现在我终于开始工作了,刚开始时并没有将uid变量重新初始化为一个字符串,但我仍然不知道为什么我以前的努力没有奏效,或者合并命令实际上决定改变我的价值观。
由于存在“重新命令”命令,因此最好不要在此上下文中使用“重新命名”一词。我想你在暗指中间的'tostring'操作,它可能应该包含一个'format()'选项,指定一个可以保留所有数字的数字格式。 –
如果你发布了你的代码,那将是最好的,否则我们只能模糊地猜测你做了什么。 – StasK