作为R用户,我现在正在使用this资源学习Stata,并对merge
命令感到困惑。
在R中,我不必担心错误地合并数据,因为它无论如何都会合并所有内容。我不需要担心公共列是否包含任何重复项,因为Y
数据帧将合并到X
数据帧中的每个重复行。 (使用all=FALSE
中的merge
)
但是对于Stata,我需要在继续合并之前从X
中删除重复的行。
在Stata中假设,为了使merge
继续进行,主表中的公共列必须是唯一的吗?
答案 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与文档所暗示的相反,不做多对多合并(即完全加入)。