【问题标题】:What is the difference between concatenate, appending and merge on SAS?SAS上的连接,附加和合并有什么区别?
【发布时间】:2016-03-23 10:40:45
【问题描述】:

我正在尝试在 SAS 上运行代码以进行连接、附加和合并,但无法理解它们之间的区别。寻找一些可以帮助我理解相同示例的人。

【问题讨论】:

  • 您应该重新安排您的问题:编写您拥有的代码并暴露您对它的疑问是有偿的。如果没有,您应该在 StakOverflow 的其他地方搜索教程/指南。
  • 我不同意;询问关于 SO 的基本术语没有任何问题。在提出这样一个简单的主题之前,我希望看到更多的研究,但询问这个想法是完全可以的。
  • 你忘了加入这个词;)

标签: sas


【解决方案1】:

ConcatenateAppend 类似,但使用方式不同。在 SAS 中,Append 最常用于表示就地串联。换句话说,将行添加到数据集而不读取原始数据集。这是非常有效的,因为您跳过读取其中一个数据集,但它有局限性(主要是,在追加时您不能交错或执行其他数据步骤类型的事情)。追加通常由PROC APPEND 完成。

连接,另一方面,虽然它可能意味着 附加,但通常在将两个数据集中的行组合成一个新数据集时使用 每个源数据集中的行作为单独的行,但不是就地。这将通过数据步骤中的set 语句来完成,最常见的是。这将读取两个数据集并写入一个新数据集(可以替换原始输入数据集之一,或具有新名称)。 Concatenate 也常用于表示将两个 string 值组合成一个变量;这实际上是我听过的最常见的用法。

Merge 完全不一样。它以某种方式并排放置,将来自一个数据集的数据放在与来自另一个数据集的数据相同的行中的新变量中。当一个数据集的键标识符值与另一个数据集不同时,可以创建新行作为合并的一部分,但这通常不是合并的重点(通常!)。合并最常在数据步骤中完成,使用 mergeupdate 语句。

Concatenate 和 Merge 也可以通过其他方式完成,当然包括 SQL。

【讨论】:

  • 交错作为连接/合并的混合体值得一提吗?即带有多个数据集的set 语句加上by 语句,而不是merge + by
【解决方案2】:

简而言之:

连接:在另一个数据集的顶部(或底部)添加一个数据集。查看DATA StepSET 语句或PROC SQLUNION 子句。

追加:只是连接的另一种说法。查看PROC DATASETS/APPEND,但它以不同的方式完成相同的任务。

合并:将数据集添加到另一个数据集的一侧(通常是右侧)。查看DATA StepMERGE 语句和/或PROC SQL 允许的各种JOIN

SAS 文档将向您展示大量示例!

【讨论】:

    【解决方案3】:

    concatenate:它用于将一个数据集的观察结果附加到另一个数据集,因此您在 set 语句中指定数据集名称列表,要连接两个数据集,SAS 系统必须处理来自两个数据集的所有观察结果创建一个新的。

    APPEND:绕过原始数据集的观察结果,当您有不同的变量时,直接在原始数据集的末尾添加新的观察结果,您可以在 append 过程中使用 force=option。它的功能与 append 相同数据集语句中的语句。 并且您一次只能附加一个数据集,而在串联中,您可以在 set 语句中添加尽可能多的数据集。

    合并:你应该有一个公共变量或几个变量一起唯一标识每个观察值,它顺序检查每个值的观察值(你必须在合并之前对数据集进行排序),然后编写组合观察新数据集

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-09
      • 2015-11-15
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2011-02-11
      • 2011-01-26
      • 2017-01-03
      相关资源
      最近更新 更多