去年,我与一家公司进行了短暂的咨询工作,该公司正在构建一个主要由基于Web的数据存储库驱动的分析应用程序。数据存储为SAS数据集的集合,“客户”可以通过上载SAS数据步骤和proc SQL脚本来将其作为子集。生成的数据随后可供下载。我的职责是指导团队使用SAS应对数据管理和分析挑战。

在安装和配置WPS之后,我的任务是开发解决方案,以解决我们早期面临的性能挑战。

针对此挑战的替代设计涉及WPS的proc R,其中可以利用将SAS数据集导出/导入到R数据帧以及从SAS / WPS脚本执行R代码的功能。进入R世界之后,识别稀疏列并创建一个删除这些列的新数据框的任务很简单。

首先包含/运行SAS autoexec文件。




wps 加载 数据分析_et操作 python wps



接下来定义一个简单的SAS宏“函数”,该函数将数据集名称作为参数并打印行和列的#。在测试SAS数据集上调用它。


wps 加载 数据分析_Python_02




wps 加载 数据分析_SAS_03




wps 加载 数据分析_Python_04



将测试SAS数据集导出到R数据帧,确定哪些列为60%或更高notnull,将这些列组装到新数据帧中,然后将该数据帧导入SAS。注意注释的语句除了空值外还标识空白。264列中只有33列达到60%阈值。该单元的执行非常迅速。


wps 加载 数据分析_数据集_05




wps 加载 数据分析_Python_06




wps 加载 数据分析_数据集_07




wps 加载 数据分析_数据集_08




wps 加载 数据分析_et操作 python wps_09




wps 加载 数据分析_et操作 python wps_10




wps 加载 数据分析_SAS_11




wps 加载 数据分析_Python_12




wps 加载 数据分析_数据集_13




wps 加载 数据分析_SAS_14




wps 加载 数据分析_SAS_15




wps 加载 数据分析_Python_16




wps 加载 数据分析_数据集_17



接下来,将SAS数据集导出到Python pandas,然后部署Python函数以确定每列中的%notnull并创建一个新的pandas数据框,其中只有%notnull超过.6的列。经过Python处理后,将pandas数据框导入SAS。与R一样 。这个单元比上一个单元耗费了一个数量级的时间。


wps 加载 数据分析_wps 加载 数据分析_18




wps 加载 数据分析_SAS_19




wps 加载 数据分析_wps 加载 数据分析_20




wps 加载 数据分析_数据集_21




wps 加载 数据分析_wps 加载 数据分析_22




wps 加载 数据分析_Python_23




wps 加载 数据分析_SAS_24




wps 加载 数据分析_wps 加载 数据分析_25




wps 加载 数据分析_wps 加载 数据分析_26




wps 加载 数据分析_Python_27



尽管SAS仍然是一个主要的分析平台,并且不会很快消失,但它已为R和Python的分析工作所取代。对于SAS / WPS程序员而言,Python和R proc是Base SAS的非常有用的附件。确实,商业和开放源代码的竞争数据科学生态系统之间的互操作性将继续提高-这对数据科学世界来说无非是一件好事。目前,WPS的proc R比proc Python快很多,因此是协作SAS工作的选择。希望proc Python将很快成为高性能,使SAS数据程序员能够平等地访问前两个DS平台。