如图,小伙伴们注意在stata 14 中 对于Help merge文档中,options中assert的用法,我画红线这里是有问题的,应该是not allow 而不是allow
一些名词解释:
主数据集:现在使用的数据集,原本的基底数据集
使用数据集:想要合并过来的数据集,外来的数据集
这里的意思是(核心是最后一句话) :使用 assert(match master)
指定合并文件必须仅包含 匹配的 主数据集观测值或使用数据集中的观测值 和 未匹配的主数据集观察结果,并且不得包含未匹配的使用数据集中的观察结果。指定 assert()
会导致合并操作时,在您允许的观察结果中存在匹配结果时会出现错误(报错)。
最后一句话应该的意思是:指定 assert()
会导致合并操作时,在您未明确允许的匹配结果存在时,发出错误消息。
这里的区别就是到底是allow还是not allow
我还一直在纳闷,都允许的条件下存在匹配结果了,您还给人家报错?
原来就是stata 14 版本的help文档错了
官网最新的help文档可以佐证我的看法,如图:
怎么理解呢:help 一下assert 发现在merge 中 assert是一个检验器,就是检验要进行操作的数据是否符合它所指定的条件,假如不符合就不会进行merge操作;
举个例子 比如本来文件1 是id 1 2 3 总共3行 后面是姓名 a b c ,文件2 是id 1 2 两行 后面是成绩 x y 。这个时候假如merge ……assert(match) ,这里match条件的意思是两边的id都得是匹配得上的,不会出现一边有一边没有的情况,但是这里出现了在文件1有id 3 文件2 没有 。因为merge本身这个命令呢不会把id3 的那一行给删除,此时“存在未允许的匹配结果,就会出现错误”,所以此时就会报错,所以就不会发生匹配。