发布网友 发布时间:2022-09-21 08:37
共1个回答
热心网友 时间:2023-11-15 23:08
append将存储在磁盘上的Stata格式数据集附加到内存中数据集的末尾。 如果指定了任何没有扩展名的文件名,则假定为.dta .Stata还可以将来自两个数据集的观察结果合并为一个。参考[D] merge.参考[U] 22 Combining datasets有关append,merge和joinby的比较.
将mydata2.dta追加到mydata1.dta,内存中没有数据
如上所述,但mydata1.data在内存中
如上所述,并生成 generate(newv)以指示源数据集
如上所述,但不要从mydata2.dta复制值标签或注释
仅保留mydata2.dta中的v1,v2和v3
您可以用双引号括起文件名,也可以不用。如果文件名包含空格或其他特殊字符,则必须用双引号括起文件名。
generate(newvar):newvar标志着结果观察的来源。
keep(varlist):防止指定变量追加数据集。
nolabel:不要从磁盘上的数据集复制值标签定义
nonotes:不要从磁盘上的数据集复制备注
force:强制将字符串追加到数字或数字到字符串,没有出现错误。
generate(newvar)指定要创建的变量的名称,该变量将标记观察源。 来自master dataset,的观察(append命令之前的内存中的数据),该变量将包为0。 来自第一个using dataset,的观察值,该变量将为1; 来自第二个using dataset的观测值该变量将为2; 等等。
keep(varlist)指定要using dataset保留的变量。 如果未指定keep(),则保留所有变量。
keep(varlist)中的varlist与标准Stata varlists的不同之处在于两种方式:varlist中的变量名称可能不会缩写,除非使用通配符,并且您可能不会引用一系列变量,例如price-weight。
nolabel可防止Stata将磁盘数据集中的值标签定义复制到内存中的数据集中。 即使您未指定此选项,也不会从磁盘数据集中定义标签定义替换已在内存中的定义。
nonotes可防止using dataset中的注释合并到结果中。 默认设置是合并using dataset中尚未出现在主数据中的注释。
force允许将字符串变量附加到数值变量,反之亦然,从而导致using dataset中缺少值。 如果省略,追加会发出错误消息; 如果指定,追加发出警告消息。
appendappend将存储在磁盘上的Stata格式数据集附加到内存中数据集的末尾。 如果指定文件名没有扩展名的,则假定为.dta格式。
Stata还可以将两个数据集中的观测值合并为一个; 参见[U] 22组合数据集以进行追加,合并和连接的比较。 see [D] merge. See [U] 22 Combining datasetsfor a comparison of append, merge, and joinby.
我们有两个想要合并的数据集存储在磁盘上。 第一个数据集,称为even.dta。 第二个数据集名为odd.dta。 数据集是
我们将even data 附加到odd data的末尾。 因为odd data已经存在于内存中(我们刚刚在上面使用过它们),所以我们键入append using even。 结果是:
两个数据集中的变量顺序无关紧要。 Stata总是按名称附加变量:
假设我们在内存中包含变量ec的数据集,并且我们之前已经给出了一个标签变量ec“Ecation Level”命令,与ec相关联的变量标签是“Ecation Level”。 我们现在附加一个名为newdata.dta的数据集,该数据集还包含一个名为ec的变量,但其变量标签为“Ed”。 。 附加两个数据集后,ec变量仍标记为“Ecation Level”。See [U] 12.6.2 Variable labels.
假设ec变量的值标有名为eclbl的值标签。 进一步假设在newdata.dta中,ec的值也由名为eclbl的值标签标记。因此,在内存中有一个eclbl定义,而newdata.dta中有另一个定义(尽管可能是等效的)。 附加新数据后,您将看到以下内容:
如果内存中的一个标签和磁盘上的另一个标签具有相同的名称,则追加警告您问题并坚持当前在内存中的定义,忽略磁盘文件中的定义。