除了Proc Sql和Merge语句之外,是否有任何替代方案可以合并SAS中的两个数据集?

时间:2013-09-18 06:50:55

标签: sas proc-sql

我想合并两个数据集,但不使用merge语句和Proc sql,我可以这样做吗? 有没有办法做同样的事情

3 个答案:

答案 0 :(得分:3)

是的,有:使用哈希表的连接 请参阅此文档以获取示例:http://www.nesug.org/proceedings/nesug06/dm/da07.pdf

优点:

  • 在某些情况下更快

缺点:

  • 其中一个表需要适合内存
  • 语法非常类似SAS(更接近java等语言)
  • 并非所有人都熟悉这个概念,当然是新手SAS用户(可能是维护问题)


在我看来,散列连接仅在非常有限的一组用例中有用。一个例子是满足以下两个条件:

  1. 您需要将一张巨大的桌子中的信息与一个小的(易于放入内存)表格连接起来。
  2. 大型表未对连接变量进行排序,并且对其进行排序没有任何附加值。
  3. 当小表变得非常小(例如只有10个键值)时,我可能会考虑使用2个宏变量和2个数组的一些方法。这是因为代码可以像其他人一样高效地识别为SAS,并且可能需要维护它。

    结论:从问题框架的方式判断,你应该去SAS数据步合并或proc sql join。

答案 1 :(得分:2)

虽然不是真正意义上的合并,但如果您有一个大数据集和一个小数据集,则可以将较小的DS作为格式读取,然后使用proc format将值放在较大的数据集上

答案 2 :(得分:0)

合并两个数据集共有5种方法:

  1. Proc SQL
  2. 数据合并
  3. Proc格式
  4. 阵列
  5. 哈希对象
  6. 选择过程取决于数据集的大小和使用的主键。

    Proc Format和Hash Object已被证明是合并较大运行时间的大数据集的最佳方法。