0

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

4

3 回答 3

3

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

好处:

  • 在某些情况下更快

缺点:

  • 其中一张表需要适合内存
  • 语法非常不像 SAS(更接近于 java 等语言)
  • 不是每个人都熟悉这个概念,当然是 SAS 新手(可能是维护问题)


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

  1. 您需要将一个大表中的信息与一个小(很容易放入内存)表连接起来。
  2. 大表未按连接变量排序,对其进行排序没有附加价值。

当小表变得非常小(例如只有 10 个键值)时,我可能会考虑使用 2 个宏变量和 2 个数组的一些方法。这是因为代码将与 SAS 一样高效且更容易被其他可能追随我并需要维护它的人识别。

结论:从问题提出的方式来看,你应该选择SAS数据步骤合并或proc sql join。

于 2013-09-18T07:35:06.683 回答
2

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

于 2013-09-18T08:41:28.037 回答
0

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

  1. 处理 SQL
  2. 数据合并
  3. 过程格式
  4. 数组
  5. 哈希对象

过程的选择取决于数据集的大小和使用的主键。

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

于 2013-10-23T13:38:28.437 回答