Stata 使用未排序的数据(nearmrg)

Stata 使用未排序的数据(nearmrg),stata,Stata,我试图在我的数据文件上使用nearmrg,但我一直收到相同的错误: 使用未排序的数据 因为我想解决这个问题,所以我使用了非常简单的测试数据,而不是我的真实数据,错误消息仍然会显示出来。现在我有以下几点: Master.dta: Group Date A 15.01.2012 A 15.02.2012 B 15.01.2012 B 15.02.2012 C 15.01.2012 C 15.02.2012 使用.dta: Group Date SVarOfInteres

我试图在我的数据文件上使用
nearmrg
,但我一直收到相同的错误:

使用未排序的数据

因为我想解决这个问题,所以我使用了非常简单的测试数据,而不是我的真实数据,错误消息仍然会显示出来。现在我有以下几点:

Master.dta:

Group   Date
A   15.01.2012
A   15.02.2012
B   15.01.2012
B   15.02.2012
C   15.01.2012
C   15.02.2012
使用.dta:

Group Date SVarOfInterest1 SVarOfInterest2
A 01.01.2012 1 201
A 15.01.2012 2 202
A 03.02.2012 3 203
A 23.02.2012 4 204
B 03.01.2012 11 211
B 19.01.2012 12 212
B 03.02.2012 13 213
C 20.01.2012 21 221
C 25.01.2012 22 222
C 04.02.2012 23 223
C 03.01.2012 24 224
代码如下:

nearmrg Group using Using.dta, nearvar(Date) genmatch(SourceDate) lower
using data not sorted
r(5);

似乎Stata认为您使用的数据未排序。即使您看起来已排序,在运行
nearmrg
之前,对每个数据文件运行
sort
命令

tempfile myTemp
<read in Using file>
sort Group
* save temporary file
save "`myTemp'"

<read in master file>
sort Group
nearmrg Group using `myTemp', nearvar(Date) genmatch(SourceDate) lower
tempfile myTemp
排序组
*保存临时文件
保存“`myTemp'”
排序组
使用“myTemp”的nearmrg组,nearvar(日期)genmatch(SourceDate)更低

作为旁注,
nearmrg
不是基本状态的一部分。如果您在问题中提到它是一个用户编写的包,这会很有帮助。

似乎Stata认为您使用的数据没有排序。即使您看起来已排序,在运行
nearmrg
之前,对每个数据文件运行
sort
命令

tempfile myTemp
<read in Using file>
sort Group
* save temporary file
save "`myTemp'"

<read in master file>
sort Group
nearmrg Group using `myTemp', nearvar(Date) genmatch(SourceDate) lower
tempfile myTemp
排序组
*保存临时文件
保存“`myTemp'”
排序组
使用“myTemp”的nearmrg组,nearvar(日期)genmatch(SourceDate)更低

作为旁注,
nearmrg
不是基本状态的一部分。如果您在问题中提到这是一个用户编写的软件包,这会很有帮助。

谢谢您的建议。我以前尝试过对数据变量进行排序。因为我不熟悉tempfiles,所以我采用以下方法:使用Using.dta;分拣日期;保存、替换;文件使用.dta保存;使用Master.dta;分拣日期;保存、替换;已保存Master.dta文件;使用using.dta的nearmrg组,nearvar(日期)genmatch(SourceDate)更低;>使用未排序的数据;r(5);如果我遗漏了什么,我将感谢您的进一步评论。谢谢你的旁注;由于我是这个论坛的新手,这些技巧确实对我有帮助。@Maryna Gulenko仔细看了看,也许程序希望你按组排序。我将更改代码以反映这一点。我建议学习
tempfiles
以及
preserve/restore
。它们可以使你的项目更干净(例如,减少项目文件夹中剩余的中间文件)。我也尝试过这个方法,但仍然收到相同的错误。感谢您对tempfiles和preserve/restore的建议@Maryna Gulenko听起来你必须在这个包的文档中寻找线索。使用未排序的数据收到的错误消息肯定是由于排序问题造成的。如果这个软件包提供了一些数据示例,那么最好通过它来了解它是如何工作的。奇怪的是,我通过了一个我发现的示例(不是从作者那里直接找到的,但它看起来是可行的),所以我确信它会工作的。但你是对的,我必须深入挖掘。在Statalist论坛上的一篇帖子的帮助下,我刚刚遇到了另一个可以解决我问题的软件包,所以我现在将关注它。非常感谢您的帮助和进一步的建议!谢谢你的建议。我以前尝试过对数据变量进行排序。因为我不熟悉tempfiles,所以我采用以下方法:使用Using.dta;分拣日期;保存、替换;文件使用.dta保存;使用Master.dta;分拣日期;保存、替换;已保存Master.dta文件;使用using.dta的nearmrg组,nearvar(日期)genmatch(SourceDate)更低;>使用未排序的数据;r(5);如果我遗漏了什么,我将感谢您的进一步评论。谢谢你的旁注;由于我是这个论坛的新手,这些技巧确实对我有帮助。@Maryna Gulenko仔细看了看,也许程序希望你按组排序。我将更改代码以反映这一点。我建议学习
tempfiles
以及
preserve/restore
。它们可以使你的项目更干净(例如,减少项目文件夹中剩余的中间文件)。我也尝试过这个方法,但仍然收到相同的错误。感谢您对tempfiles和preserve/restore的建议@Maryna Gulenko听起来你必须在这个包的文档中寻找线索。使用未排序的数据收到的错误消息肯定是由于排序问题造成的。如果这个软件包提供了一些数据示例,那么最好通过它来了解它是如何工作的。奇怪的是,我通过了一个我发现的示例(不是从作者那里直接找到的,但它看起来是可行的),所以我确信它会工作的。但你是对的,我必须深入挖掘。在Statalist论坛上的一篇帖子的帮助下,我刚刚遇到了另一个可以解决我问题的软件包,所以我现在将关注它。非常感谢您的帮助和进一步的建议!