R和Stata之间的合并命令比较

时间:2011-09-07 08:01:31

标签: r merge stata

作为R用户,我现在正在使用this资源学习Stata,并对merge命令感到困惑。

在R中,我不必担心错误地合并数据,因为它无论如何都会合并所有内容。我不需要担心公共列是否包含任何重复项,因为Y数据帧将合并到X数据帧中的每个重复行。 (使用all=FALSE中的merge

但是对于Stata,我需要在继续合并之前从X中删除重复的行。

在Stata中假设,为了使merge继续进行,主表中的公共列必须是唯一的吗?

2 个答案:

答案 0 :(得分:6)

你的问题的答案是否定的。我会尝试解释原因。

您提到的链接仅涵盖Stata可能的一种合并类型,即一对多合并。

merge 1:m varlist using filename

其他类型的合并是可能的:

指定关键变量的一对一合并

merge 1:1 varlist using filename

指定关键变量的多对一合并

merge m:1 varlist using filename

指定关键变量的多对多合并

merge m:m varlist using filename

通过观察一对一合并

merge 1:1 _n using filename

详情,解释和示例可在help merge中找到。

如果您不知道观察结果在数据集中是否唯一,您可以执行以下检查:

bysort idvar: gen N = _N

ta N

如果您发现N的值大于1,则您知道观察结果与idvar不同。

这实际上是Stata 11引入的merge命令的新语法。在Stata 11之前,merge命令稍微简单一些。您只需对数据进行排序,然后就可以执行以下操作:

merge varlist using filename

顺便说一下,您仍然可以在Stata 11或更高版本中使用这种旧语法。

答案 1 :(得分:0)

joinby,unmatched(both)是与R命令合并对应的命令。

特别是合并m:m与文档所暗示的相反,不做多对多合并(即完全加入)。