mergeall -- 合并多个文件的安全方法
安装命令
ssc install mergeall
Syntax
mergeall varlist using folder [, options]
varlist 是唯一标识观察结果的匹配变量。 这是必需存在的。
Options and Description
csv: 合并的文件是.csv(默认)
txt: 合并的文件是.txt
dta: 合并的文件是.dta
tab: 以制表符分隔的数据
comma: 以逗号分隔的数据
double: 将所有数字变量记录为 double . 请参阅 format
format:指定在必须将数字变量转换为字符串的情况下使用的格式/请参阅 tostring 和 format
do(filename): 在合并之前,在每个单独的文件上运行指定的do文件
strings(varlist): 强制 varlist为字符串格式,所有其他格式为数字
force: 强制转换为字符串或数字,字符串选项必需。
showsource: 生成一个新的字符串变量,其中包含从中抽取每个观察的文件的名称。
Description
mergeall 由于可变存储类型或重复的唯一标识符,合并文件夹中的所有文件而不会丢失数据。
Remarks
mergeall 循环遍历指定文件夹中的所有文件,在合并之前检查变量类型。它将所有文件中的字符串变量设置为每个文件中的字符串,以防止数据丢失。 默认情况下,Stata 强制使用主文件的变量类型在使用文件上,这可能导致数据丢失。
mergeall 需要指定唯一标识符,如果标识符在文件中不唯一,则退出时会出错。 需要一个唯一标识符,因为当没有唯一标识符时,Stata有时会以意想不到的方式合并,而 mergeall 的目标是使许多文件合并为超级安全。
mergeall 使用Stata10样式合并执行1到1合并,并创建一个新变量_disagreement,如果两个或多个数据集中存在观察值,则该变量等于1,并且数据集的值不同。 如果_disagreement等于1,则表示您丢失了信息。
如果你愿意,可以在使用do(filename)合并之前在每个数据集上运行清理.do文件(例如,这对于修复唯一标识符中的错误非常有用)。
strings 可能是一个坏主意,因为它可能导致数据丢失,但如果你非常确定你不会丢失数据,它运行速度会快一些。
当您想要返回原始数据以检查值,但不知道哪个原始文件包含您要查找的观察值时,showsource 选项对故障排除非常有用。