我一直试图将最初从merge导入的三个Stata文件与6个字符串ID代码(例如n5fpeb
)合并,但没有成功。它们作为str6
变量存储在Stata数据文件中。
我还记录了一些其他变量,这些变量也识别了每个观察结果--一个数字参与者ID和一个学校ID编号,因为每个参与者都是学生。我的主数据集是堆叠格式的,因为我的数据是纵向的。当我尝试1:m合并(即merge 1:m id using "C:\Users ... May.dta", generate(_merge1)
)时,Stata返回以下错误消息:variable id does not uniquely identify observations in the master data
。
我读过各种指南,但不明白为什么数据集不会合并。我是不是用错了命令?或者可能是字符串变量,或者多个字符串变量,混淆了Stata?我想学习如何干净地将未来的观察添加到我的主数据集中。
发布于 2015-06-12 17:31:47
我会尽力解释这个错误
变量id并不唯一地标识主数据中的观测值。
看看这个数据集
clear
input ///
id date metric
1 25 45
1 26 98
1 27 54
2 23 09
2 24 13
2 25 87
end
list, sepby(id)
这是纵向(面板)数据,就像你说的那样。尽管我们有一个名为id
的变量,但这并不意味着该变量唯一地标识了观察结果。事实上,事实并非如此。如果我要覆盖date
和metric
上的信息(比如用一张纸),那么您就无法根据变量id
唯一地标识每个观察结果;对于每个主题的所有三个观测值,id
都具有相同的值。
现在滑动你的纸张,这样你就可以看到id
和date
了。因为这两个变量的组合创建了唯一的值对(即1/25、1/26、1/27、2/23、.),所以和变量结合在一起,唯一地标识了观测值。注意,merge
命令接受一个varlist
,因此可以指定多个变量。
Stata在你的merge 1:m id
中抱怨说,它希望id
能唯一地识别观察结果,但是它没有。另外,它说问题在于主数据,也就是当前加载的数据。
跑
duplicates report id
duplicates report id date
加载示例数据集之后,您将在单独使用id
时看到重复的数据集,而对于id date
则没有重复的数据集。
如果您提供了有代表性的示例数据集(主数据集和使用数据集),以及最终数据集的外观,您可能会得到所需命令的特定帮助。有关指南,请参见this page。
https://stackoverflow.com/questions/30804946
复制相似问题