由于SAS软件本身具有巨大的商业价值,一般的人很难获得最新的安装拷贝。那我们该如何学习SAS编程呢? SAS 考虑全球不断增长的分析产业人员需求,推出了基于SAS 私有云的SAS Studio 应用服务 SODA。
SODA 全称SAS® OnDemand for Academics是 SAS 为学术群体提供的免费在线的应用服务环境。运行在SODA上的SAS Studio可以让您在任何地方任何时间、任何地点编写/运行您的SAS代码。所有数据和代码都会存储在SAS私有云!这是目前学习使用SAS程序开发成本最低、最快捷的方法——除非你在本地已经安装强大的SAS开发环境。
下面就让我们带上一个电子邮箱帐号+网页浏览器一起出发吧…
登录完毕后,系统将引导你到SAS ODA 的控制中心。页面上你将会看到一个 SAS® Studio 应用。点击它登录应用即可。
你也可以登录 SAS ODA 控制中心后直接在浏览器中输入如下网址访问 SAS Studio https://odamid.oda.sas.com/SASStudio。目前SODA提供服务的SAS Studio 为3.5 企业版,支持Chrome27+,IE9-11, Firefox 21+ 和 Apple Safari 6.0+ 以上的浏览器。后台SAS为Linux 64位版本。SAS Studio 为用户提供一个编写/执行SAS程序、简便高效的Web开发环境。
右侧提供了程序窗口,包括 “代码”,“日志“ 和 “结果” 三个窗口。一般步骤是在代码窗口中输入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 应用了。
鼠标点击右上角的 “注销” 菜单即可。
安全退出后应关闭浏览器。
由于所有数据都保存在云端,因此你下次登录时所有的数据和程序都还在,你可以随时继续你的分析工作… 也可以随时保存工作并退出!
这样我们在新建另一个SAS 程序的时就可以很方便地在程序编辑器中 “双击” 添加左侧选中的代码片段了。比如下面我们编写的一个简单的对 mylib.class 的数值变量计算平均值和极差的程序,需要插入DisplayLogo 信息。
libname mylib "/home/yinliangwu0";
proc means data=mylib.class;
var age weight height ;
run;
运行我们的代码然后保存到 MeansClass.sas中:
相应地,代码中 libname mylib "/home/yinliangwu0"; 就可以注释掉了。
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.