我正在尝试在SAS上运行Concatenate,Appending和Merge的代码,并且无法理解它们之间的区别。寻找一些帮助我理解相同的例子。
答案 0 :(得分:3)
连接和追加类似,但使用方式不同。在SAS中,追加最常用于表示连接。换句话说,将行添加到数据集而不读取原始数据集。这是非常有效的,因为你跳过阅读其中一个数据集,但它有局限性(很大程度上,你可以在追加时交错或做其他数据步骤类型的事情)。追加通常由PROC APPEND
完成。
连接虽然它可能意味着附加,但通常在将来自两个数据集的行组合到一个新数据集中时使用每个源数据集中的行作为单独的行,但不是就地。这可以通过数据步骤中的set
语句完成,最常见。这会读取数据集并写入新数据集(可以替换其中一个原始输入数据集,或者使用新名称)。连接也经常用于表示将两个字符串值组合成一个变量;这实际上是我听过的最常见的用法。
合并完全不一样了;它以某种方式并排放置,将来自一个数据集的数据放在与其他数据集中的数据相同的行中的新变量中。当一个数据集具有与另一个数据集不同的密钥标识符值时,可以创建新行 作为合并的一部分,但这通常不是合并的点(通常是!)。合并最常在数据步骤中完成,使用merge
或update
语句。
Concate和Merge也可以通过其他方式完成,当然也包括SQL。
答案 1 :(得分:1)
简而言之:
连接:在另一个数据集的顶部(或底部)添加数据集。查看SET
的{{1}}语句或DATA Step
的{{1}}条款。
附加:连接的另一个词。查看UNION
/ PROC SQL
,但它以不同的方式完成相同的任务。
合并:将数据集添加到另一侧的数据集(通常是右侧)。查看PROC DATASETS
的{{1}}声明和/或APPEND
允许的各种MERGE
。
SAS文档将向您展示大量示例!
答案 2 :(得分:0)
连接:它用于将观察从一个数据集附加到另一个数据集,因此您在set语句中指定数据集名称列表,以连接两个数据集,SAS系统必须处理来自两个数据集的所有观察创建一个新的。
APPEND:绕过原始数据集中的观察结果,并在原始数据集的末尾直接添加新观察值,当您使用带有附加过程的force =选项时,它们具有不同的变量。它的功能与追加相同数据集语句中的语句。 并且您只能一次附加一个数据集,而在连接中,您可以在set语句中添加任意数量的数据集。
MERGE:你应该有一个公共变量或几个变量,这些变量一起唯一地标识每个观察结果,它会连续检查每个按值的观察结果(你必须在合并之前对数据集进行排序),然后编写组合观察新数据集