首页 存档 技术 查看内容

从程序员到数据科学家:SAS 编程基础(2)语言概述

2018-3-30 13:00 |来自: 互联网 295 0

摘要: 技术大咖 SAS 北京研发中心商业智能和可视化分析产品部技术总监巫银良先生,今天继续跟大家分享如何从程序员成为一名数据科学家!小伙伴们,继续开启 SAS 编程之旅吧! TIOBE 指数是用来反映某种编程语言的流程程度 ...

技术大咖 SAS 北京研发中心商业智能和可视化分析产品部技术总监巫银良先生,今天继续跟大家分享如何从程序员成为一名数据科学家!小伙伴们,继续开启 SAS 编程之旅吧!


TIOBE 指数是用来反映某种编程语言的流程程度的指标,根据2016年12月份最新数据显示,SAS 编程语言占比1.380%,排名22位。 编程语言本质上是人类用来与机器沟通,并在人类之间分享思维的工具,与它所需要解决的问题领域紧密相关。世界上也没有哪一种语言能够解决所有问题。所以尽管计算机领域出现了超过上千种编程语言,但终究只有少数强大语言能生存下来,SAS 便是其中之一。


SAS 语言入门容易精通难


SAS 语言要入门很快,但要精通则需要较长时间,尤其是要掌握 SAS 特有的,在普通编程语言里面没有的一些功能。SAS 作为领域特定的**编程语言(4GL),与广泛流行的第三代编程语言 C,C ,Java,C#,Javascript 不同,它专门为数据分析和报告提供非常复杂的数据操作、图形图表制作以及文档编写功能。


SAS 语言是面向过程的计算机语言


SAS 语言总体上是面向过程的计算机语言,有着传统编程语言的基本结构。但它不支持面向对象,尽管从 SAS 9 开始提供两个预定义的对象:Hash 和 HIter(Hash Iterator)并提供类似面向对象的语法,但用户至今不能用 SAS 语言创建自定义类。SAS 提供强大的互操作能力,可以调用 Java 对象和 Win32 API 函数来实现各种复杂功能。SAS 语言也并不像 Python/Perl 等严格意义上的脚本式编程语言,具有真正的脚本/流控制构造。


SAS 语言拥有两种基本的数据类型


SAS 语言中只有两种基本的数据类型:字符型和数值型。从外部数据到 SAS 内部数据存储表达之间,可以使用 INFORMAT 和 FORMAT 进行读/写转换。然而,在一些 PROC 步中,SAS 也提供特定的数据类型来覆盖这两种基本类型,比如 PROC FCMP(从 SAS 9.1开始)中类似C语言的结构体,以及 PROC IML 中的矩阵。与传统编程语言支持各种各样的基本数据类型(比如布尔/整数/浮点/字符…)不同,统计学上的数据类型根据计量尺度只有定类(如性别)、定序(如年级)、定距(如温度)以及定比(重量)等四种需要考虑。


SAS 语言拥有强大的预处理器功能


SAS 语言提供非常强大预处理器,实现编译前的宏替换功能。它允许 SAS 程序在编译和运行期间,动态改变程序自身,并可实现递归调用宏本身。使用 SAS 语言的统计分析人员经常赞叹 SAS 语言的强大功能,而不熟悉 SAS 语言的编程人员有时也会为它与第三代编程语言的不同而困惑不解,迷失在宏与非宏的代码陷阱里。


SAS 语言是一门复杂的计算机语言


SAS 语言是一门比较复杂的计算机语言,甚至它到底是编译执行还是解释执行有时候连有经验的 SAS 开发人员也会感到困惑。由于 SAS 语言包含灵活的语言元素,SAS Macro 宏是由解释器展开,但是 DATA Step 和 Proc Step 则以步为单位进行一次编译,然后统一执行而非逐语句进行解释执行。SAS 是兼具编译和解释的混合型计算机语言,因此维基百科的分类中也很难将 SAS 语言归入编译还是解释类别(Compiled_language v.s Compiled_language)。


SAS 语言提供完备细致的数据访问


SAS 语言最强大的能力是为分析编程人员提供了完备细致的数据访问,而不用太考虑数据的存储格式和存储位置,比如最常用的 DATA Step 和 PROC SQL 就提供了各种各样的数据操作能力,而丰富的 PROC Step 支持则让分析人员专注于分析本身和参数设定。一旦 SAS 编程入门,则只有不懂的统计类型,没有不会使用的 PROC Step。


从传统语言编程基础转换到 SAS 语言编程,首先要记得如下一些 SAS 语言的核心规则:


  • SAS 程序由一系列 SAS 语句组成,所有的语句都以分号 ; 结束。


  • SAS 代码中也可以包含数据行,但数据行不作为语句,不以分号结尾。


  • 一个 SAS 语句可以跨行,多个 SAS 语句也可以在一行上;SAS 语句可以从一行中的任意位置开始,代码缩进并非必需。


  • SAS 语句中的关键字是以空格分隔的,通常由“关键字”或“关键字=参数”系列组成;某些语句可以在必选项和可选项之间用 / 分隔。


  • SAS 语言不区分大小写,你可以使用大写/小写以及它们的混合。但字符变量的值是区分大小写的。比如 “Hello World” 和 “HELLO WORLD” 为不同的两个值。


  • SAS 代码中标识符长度较短:逻辑库引用/文件引用(libref/fileref)名称最长不超过8字节、数据表/数据列(即变量)名称最多不超过32字节。


  • SAS 代码提供强大的 SAS 宏系统支持,包含 % 和

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部