从程序员到数据科学家:SAS 编程基础 (04)


本文是《从程序员到数据科学家:SAS 编程基础-03)编程环境》的增补篇,用于专门介绍如何让没有安装 SAS 环境的程序员们,随时随地免费使用部署在 SAS 私有云上的SAS Studio开发环境!由于主题是面向 SAS Studio 入门,文中部分地方可能使用了前面尚未介绍的SAS代码和有关内容。

由于SAS软件本身具有巨大的商业价值,一般的人很难获得最新的安装拷贝。那我们该如何学习SAS编程呢? SAS 考虑全球不断增长的分析产业人员需求,推出了基于SAS 私有云的SAS Studio 应用服务 SODA

SODA 全称SAS® OnDemand for Academics SAS 学术群体提供的免费在线的应用服务环境。运行在SODA上的SAS Studio可以让您在任何地方任何时间、任何地点编写/运行您的SAS代码。所有数据和代码都会存储在SAS私有云!这是目前学习使用SAS程序开发成本最低最快捷的方法——除非你在本地已经安装强大的SAS开发环境。

下面就让我们带上一个电子邮箱帐号+网页浏览器一起出发吧

1.【注册用户】:在浏览器中输入网址:https://odamid.oda.sas.com/SASODARegistration ,提交用户名来注册SAS® OnDemand for Academics SODA)账号,你的邮箱将会收到用户ID,该用户ID会在后面用来登陆 SODA 控制中心,使用SODA提供的应用服务

2. 【登录云端】:注册完成后,通过网址https://odamid.oda.sas.com 访问SODA控制中心。此时需要您的【用户ID】和【用户密码】。注意:这儿的【用户ID 并非你的邮箱地址,而是SODA给你分配的用户ID (比如 yinliangwu0)。其界面如下:

登录完毕后,系统将引导你到SAS ODA 的控制中心。页面上你将会看到一个 SAS® Studio 应用。点击它登录应用即可。

你也可以登录 SAS ODA 控制中心后直接在浏览器中输入如下网址访问 SAS Studiohttps://odamid.oda.sas.com/SASStudio。目前SODA提供服务的SAS Studio 3.5 企业版,支持Chrome27+IE9-11, Firefox 21+  Apple Safari 6.0+ 以上的浏览器。后台SASLinux 64位版本。SAS Studio 为用户提供一个编写/执行SAS程序、简便高效的Web开发环境。

3. 【开发程序】登录SAS Studio后,其主界面包括上面的菜单栏、左侧的导航面板和右侧的内容窗口,导航面板“服务器文件和文件夹”、任务和实用程序代码段逻辑库、“文件快捷方式”  “SAS文件夹” 等内容。其中服务器文件和文件夹”和逻辑库” 比较常用。服务器文件和文件夹是你在服务器上的磁盘空间,一般映射到你的主目录/home/<userid> 上。

右侧提供了程序窗口,包括 代码日志“  结果” 三个窗口。一般步骤是在代码窗口中输入SAS程序,然后点击代码页签工具栏最左边的运行按钮、或者直接按键盘上F3功能键直接执行代码。比如:

执行结果可以查看日志窗口,比如:

结果窗口是用来输出 ODS 结果的,我们可以在程序中输入如下代码,然后按 F3 运行SAS代码即可看到有ODS输出结果的情形。

proc print data=sashelp.class;

run;

在分析中你可能需要上传自己的数据文件,你可以右键点击左侧导航面板中的 文件(主目录),然后在菜单中选择 上载文件…”


在如下弹出对话框中选择 “选择文件,然后选择你本地电脑上的数据文件,比如c:\temp\class.csv ,即可将文件上传到您的服务器上。

上传完毕在左侧的导航面板“文件(主目录)中将出现 class.csv 文件,表明该文件已经传到云端。如果要将该csv数据导入到SAS 系统中,我们可以双击它,SAS Studio会自动给您生成对应的SAS Code来导入数据。你也可以选择不同的参数来进行数据导入。

注意,云端的SAS环境为了给全球所有的用户使用,为支持所有语言和地区的用户,默认的数据文件编码是UTF-8。而我们中文 Windows环境上生成的中文数据默认是GB2312编码,我们可以使用记事本另存为,选择UTF-8编码的方式来完成转码。

比如,如果我们上传一个本地 Windows 导出的csv文件,而在SAS导入的时候会默认为我们上传的是 UTF-8 格式的文件,此时就会出现乱码的情况。解决方法是:a) 我们手工用记事本或其他工具将数据文件转码;b)我们明确告诉SAS我们的数据文件的编码是 GB2312。导入到运行在云端的SAS内部后,所有的数据集默认都是 UTF-8 编码的。

如果我们是 Windows 导出 csv 文件,需要指定数据源文件是 gb2312。如下步骤:

双击class.csv,然后在右侧class 页签下点击 编辑SAS Studio会自动给你生成新的SAS代码 “程序2”。运行即可正确导入数据。

 

在结果窗口中可以看到导入完毕的数据,比如数据集名称 WORK.IMPORT1。缺省情况下输出数据都会放在临时逻辑库 WORK 中。

 

我们可以通过鼠标右键点击左侧导航栏下的“逻辑库/我的逻辑库/WORK/IMPORT1” 来重命名数据集,比如改为 WORK.CLASS

这样,我们就可以在本次SAS会话期间(即本次登录 SAS Studio 期间)一直使用WORK.CLASS数据集。修改代码为如下:

proc print data=work.class;

run;

运行代码我们将看到打印的数据变为我们刚上传、然后导入的那个数据集 WORK.CLASS.

我们可以将我们的程序保存到服务器上,比如我们选择保存到 文件(主目录),文件名为PrintClass.sas

实际上,该文件保存到了服务器上的文件 /home/yinliangwu0/PrintClass.sas 中。

由于 WORK 是临时逻辑库,在SAS会话结束时系统会自动删除。如果我们要在服务器磁盘上永久保存该临时导入的数据集 WORK.class,我们可以在导入之前指定一个非临时逻辑库来保存数据、或者如下:我们新建一个逻辑库 mylib ,然后在 mylib 中生成一份WORK.CLASS的拷贝。如下:

libname mylib “/home/yinliangwu0”;

data mylib.class;

   set work.class;

run;

这样我们就可以将我们的打印class 代码改为:

proc print data=mylib.class;

run;

运行上面的代码后,我们可以看到服务器的逻辑库/我的逻辑库” 中多了 MYLIB,其中还包括数据 CLASS

 其对应的物理文件就是:服务器 odaomr.oda.sas.com /home/yinliangwu0/class.sas7bdat

这样,我们完成了上传数据集,并将数据保存在了非临时逻辑库。同时也在服务器上编写完了SAS 程序 PrintClass.sas,我们就可以随时注销,关闭SAS Studio 应用了。

鼠标点击右上角的 注销” 菜单即可。

安全退出后应关闭浏览器。

由于所有数据都保存在云端,因此你下次登录时所有的数据和程序都还在,你可以随时继续你的分析工作… 也可以随时保存工作并退出!

4. 以下分享若干提示信息:

a)  检查SAS Studio 和后台SAS平台的版本信息:点击右上角?号,然后选择“关于SAS® Studio” 即可查看。

b)  查看系统默认的文本编码:从右上角“其他应用程序选项”按钮入口,选择 参数选择->常规-> 默认文件编码UTF-8 ,该选项设定读取/保存 SAS 程序代码的默认编码。我们在中文平台上创建的SAS程序文件默认编码为 GB2312。而SAS SODA 系统默认采用 UTF-8 处理文件读写和数据处理,因此建议上传文件/上传代码之前确保文件编码为 UTF-8 编码。记住,该选项并不影响我们前面提到过的导入数据功能,因此即使在此修改此文本编码为 GB2312,也不会修正从客户端上传的GB2312编码的数据导入到SAS系统环境中,因为 GB2312和系统默认会话编码 UTF-8 之间的不一致问题。

c)  在参数选择中 “启用提示” 可以改善我们的程序编辑器行为,从而让我们可以在进行SAS 编程的时候获得必要的提示信息(如下图)。

d)  SAS Studio 中利用 代码段” 可以让我们方便地重用一些代码片段,比如我们可以在代码编辑窗口中任意选中某些代码(如下蓝色部分),然后点击工具栏“添加至我的代码段” 按钮,即可命名特定代码片段。


这样我们在新建另一个SAS 程序的时就可以很方便地在程序编辑器中 双击” 添加左侧选中的代码片段了。比如下面我们编写的一个简单的对 mylib.class 的数值变量计算平均值和极差的程序,需要插入DisplayLogo 信息。

libname mylib "/home/yinliangwu0";

proc means data=mylib.class;

  var age weight height ;

run;

运行我们的代码然后保存到 MeansClass.sas中:

e)  创建自动执行代码:SAS支持在系统启动时自动执行某些程序,比如我们希望保存在磁盘特定目录的数据,在每次我们登录到SAS工作环境的时候可以用于分析,我们可以将libname 语句加入到 AutoExec文件中。

相应地,代码中 libname mylib "/home/yinliangwu0"就可以注释掉了。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值