如何在 Stata 中将堆叠的纵向数据集与字符串变量 ID 合并?

How can I merge stacked, longitudinal datasets with string variable ID's in Stata?

我一直在尝试将我最初从 MS Excel 导入的三个 Stata 文件与 6 个字符的字符串 ID 代码(例如 n5fpeb)合并,但没有成功。它们作为 str6 变量存储在 Stata 数据文件中。

我记录了一些其他变量,这些变量也可以识别每个观察结果——数字参与者 ID 和学校 ID 号,因为每个参与者都是学生。我的主数据集采用堆叠格式,因为我的数据是纵向的。当我尝试 1:m 合并(即 merge 1:m id using "C:\Users ... May.dta", generate(_merge1))时,Stata returns 出现以下错误消息:variable id does not uniquely identify observations in the master data.

我已经阅读了各种指南,但无法弄清楚为什么数据集不会合并。我可以使用错误的命令吗?或者可能是字符串变量或多个字符串变量混淆了 Stata?我想学习如何将未来的观察干净利落地添加到我的主数据集中。

您的问题的解决方案取决于您尝试与主数据集合并的具体内容。根据您的描述,我认为您的主数据中的每个参与者都由数字 ID 或字符串 ID 标识。既然你提到它是一个纵向的、堆叠的文件,我猜还有一个年份变量(或其他一些时间变量)。

如果您尝试合并的数据集是对相同数据(相同变量,也许只是更多年)的更多观察,请查看 append 命令。

如果您尝试合并的数据集是参与者级别的,那么 William 是对的,您想要 m:1。这是因为您在主文件中对同一参与者的许多观察结果相互叠加。 1:m 希望在堆栈中只找到每个 id 的一个副本。

如果您尝试合并的数据集处于参与者年级别(即也是纵向的),那么您需要 merge 1:1 id year ...(或任何时间变量)。如果您的观察堆栈中每个 id 和年份对只有一个副本(即每个时间段的每个参与者只有一个记录),这将起作用。请注意,如果您的数据不干净并且不止一个,这将不起作用。

希望对您有所帮助!

我会尝试解释错误

variable id does not uniquely identify observations in the master data

看看这个数据集

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 的变量,但这并不意味着该变量唯一标识了观察结果。事实上,它没有。如果我要覆盖(比如用 sheet 纸)关于 datemetric 的信息,您将无法根据变量 id;对于每个对象的所有三个观察 id 具有相同的值。

现在滑动 sheet 张纸,这样您就可以同时看到 iddate。因为两个变量的组合创建了唯一值对(即 1/25、1/26、1/27、2/23、...),所以 both 个变量,放在一起, 唯一标识观测值。请注意,merge 命令接受 varlist,因此您可以指定多个变量。

Stata 在您的 merge 1:m id 中抱怨,它期望 id 唯一地 识别观察结果,但它没有。此外,它说问题出在 master 数据,即当前加载的数据。

运行

duplicates report id
duplicates report id date

加载示例数据集后,单独使用 id 时您会看到重复项,但 id date.

没有重复项

如果您提供有代表性的示例数据集(master 和 using),以及最终数据集的外观,您可能会获得有关所需命令的具体帮助。有关指南,请参阅 this page