我想合并两个数据集,但不使用合并语句和 Proc sql,我可以这样做吗?有没有办法做同样的事情
问问题
210 次
3 回答
3
是的,有:使用哈希表的连接。
有关示例,请参阅此文档:http: //www.nesug.org/proceedings/nesug06/dm/da07.pdf
好处:
- 在某些情况下更快
缺点:
- 其中一张表需要适合内存
- 语法非常不像 SAS(更接近于 java 等语言)
- 不是每个人都熟悉这个概念,当然是 SAS 新手(可能是维护问题)
在我看来,哈希联接仅在非常有限的用例中有用。一个例子是满足以下两个条件:
- 您需要将一个大表中的信息与一个小(很容易放入内存)表连接起来。
- 大表未按连接变量排序,对其进行排序没有附加价值。
当小表变得非常小(例如只有 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 种方法可以合并两个数据集:
- 处理 SQL
- 数据合并
- 过程格式
- 数组
- 哈希对象
过程的选择取决于数据集的大小和使用的主键。
Proc Format 和 Hash Object 已被证明是合并大型数据集且运行时间较短的最佳方法。
于 2013-10-23T13:38:28.437 回答