我已经专业使用 SAS 将近 5 年了。我将它安装在我的笔记本电脑上,并且经常需要分析包含 1,000-2,000 个变量和数十万个观察值的数据集。
我一直在寻找 SAS 的替代品,让我能够对类似大小的数据集进行分析。我很好奇其他人在这种情况下使用什么。这当然不是今天使用的“大数据”。我的数据集也不够小,无法保存在内存中。我需要一个可以将算法应用于存储在硬盘驱动器上的数据的解决方案。这些是我调查无济于事的事情:
- R - BigMemory 可以创建存储在内存之外的矩阵,但元素必须是相同的模式。我处理字符和数字之间几乎 50/50 的数据。FF包越来越接近我的需要,但我不太明白哪些程序与之兼容。我认为支持有点有限。
- Pandas - 我对 R 的 Pythonic 替代方案感到非常兴奋。但是,它也必须将所有数据保存在内存中。
- 革命 R - 这个显示了相当多的希望。我的家用电脑上有一份副本(如果您注册 Kaggle,则免费),但尚未将其作为 SAS 的可行替代品进行测试。对作为 SAS 替代品的 Revolution R 的评论非常受欢迎。
谢谢
更新 1
编辑补充说,我正在寻找人们成功使用的现实生活中的实用解决方案。在大多数情况下,SAS 让我可以浏览大文件,而不必担心内存限制。然而,SAS 是如何实现的,他们想出了如何使内存管理对用户透明。但是,我怀着沉重的心情使用 SAS 来完成我的工作(我必须这样做),并且会喜欢一个 FOSS 替代方案,它允许我处理“大”数据,而不必过分考虑数据的位置特定时间(在内存或磁盘上)。
我遇到的最接近的东西是 R 的 FF 包和 Python 即将推出的名为Blaze的东西。然而,这些问题已经存在多年,那么分析师们在此期间都在做什么呢?他们如何处理与内存限制相同的问题?提供的大多数解决方案似乎是:
- 获得更多内存——这不是一个好的解决方案,imo。很容易找到可以超过 RAM 但仍适合硬盘驱动器的数据集。此外,工作流程必须适应探索性数据分析期间创建的所有结构。
- 对数据进行子集化——这适用于探索,但不适用于最终确定结果和报告。最终,在子集上开发的任何过程都必须应用于整个数据集(无论如何,在我的情况下)。
- 对数据进行分块——这是我想从实际实施此工作流程的人那里了解更多信息。它是如何完成的?用什么工具?能否以对用户透明的方式完成?(即,创建一些磁盘上的数据结构,框架负责后台的分块)。