初识SAS:数据读入(一)
前沿SAS
大家好!我是前沿教育的一名导师,从今天开始我会陆陆续续跟大家分享一下SAS的简单使用技巧,这个系列就叫做{前沿SAS},在大数据领域有一些耳熟能闲的软件,比如Python和R,以后我们也会继续开{前沿Python},{前沿R},{前沿Excel}等等,敬请期待!
SAS 界面窗口
1
提到SAS,大家在学校的使用远不及其他软件那么频繁,原因主要是它高昂的费用,非开源以及安装复杂等等,但是我依然认为至少在现阶段它在数据处理方面依然有很大的优势。更何况,编程语言都有共同性,授人以渔,万变不离其宗的感觉。
好,我们言归正传,开始第一篇的学习,SAS数据的读入。我们假设大家已经有了SAS软件,还没有的可以follow下面的link进行安装https://www.sas.com/en_ca/software/university-edition.html (免费版)
那么打开SAS以后,展现在我们面前的就是下面这个窗口
可以看到SAS的主要由三个窗口构成,分为五大部分,如图中展示。
Editor几乎所有的操作都从这里开始,不管你是向自己输入一段代码,还是想打开一段已有的SAS代码,总之跟代码相关的都在这里。
Log一个重中之重的概念,你所有的运行过程都会详细的纪录在这里,包括运行了哪些代码,运算时出现了哪些报错信息(红色提示),警告信息(绿色提示),运行了多长时间等等。只有当Log全蓝的时候,才说明运行没有任何的错误,否则就要根据提示进行code的debug。
Output是存放所有输出结果的地方。
Results就更像是一个目录,把你希望展示的结果输出
Explorer当中有一个非常重要的部分叫做Library,存储数据的地方,我们可以把它就想像成一座图书馆,如果你想找到一本书,一定要有横纵坐标!第几行,第几列。所以SAS在存储数据的时候也是一样,两级命名,先告诉我属于哪一类?比如科学,历史,烹饪,旅游等等(看出小编只爱吃和远方哈),这是第一级命名,我们叫它folder。然后再告诉我,是Gordon Ramsay还是Jamie Oliver的哪本书?
一个数据的名称就像chef.gordon_ramsay_home这样的长相,但是也有例外,有一个叫work的folder就是个例外。它只用来存储临时性文件,当我们不希望把它放在一个永久的folder(后续我会解释什么叫永久)时,那么当前所有的处理数据就会在work folder里显示。既然是临时性文件,大家可以想象一下,关闭SAS软件再次打开,它是不是就消失了呢?废话小编,不然那不就永久了吗,说的也是哈~~在工作中,我们一般不会保存中间过程中的data,不然既混乱又懵~~
SAS 数据导入(CSV格式)
2
在介绍完SAS的基本页面之后,想必大家的第一个问题就是怎么把现有的外部数据(例如Excel,CSV, TXT等等)读进来呢?
在本节中,我先介绍几种非常简单的方法,这些方法通常适用于那些具有非常规范的数据格式的数据。值得一提的是,通常情况下我们会把数据另存为excel或者csv等格式,比如下面这个数据:
该数据纪录了一些超市的货物订单情况,数据以逗号分割的csv方式进行存储(搞清数据的存储方式,决定了能否正确读入)。那么怎么把它读入SAS呢?只需要下面几行代码轻松搞定。
我想借助这段SAS代码,再简单的回顾和介绍一下SAS的结构。我们一开始说了Library里面有两种数据存储方式,一种是永久式(permanent dataset),另一种是临时式(temporary dataset)。也讲到了两级命名,所以上面这段代码新生成的testdata是一个什么类型呢?它就是个临时式的,关了SAS再打开,就消失的无影无踪。只有临时式的dataset才可以用一级命名,这个data可以叫testdata也可以叫work.testdata
好,回到我们的这段程序,在data和run之间是我们读数据的指令,infile这个命令是读取外部数据的一个重要命令,它后面跟的就是数据存放的路径,在电脑中的位置,比如上面这个数据就存放在我的G盘里。后面的dlm是delimiter的缩写,要告诉SAS你的文件是以什么分隔,在这里我们是以逗号分开。接下来input也是一个读取数据的关键命令,后面跟的是变量名,在本例中,第一列是order的日期,我们起名叫Orderdate,因为我们想把它读成数值型变量,可以用来加减乘除,所以我们后面什么也不用加,default就是数值型变量。第二列,我们想要记录订单的发货地,它是一个字符型的变量,所以要在Region后面加上”$”来标识,这是SAS的规则。
下面我们选中这段程序,点一下菜单中“奔跑的小人”进行代码提交,显示如下:
程序运行成功,我们双击一下数据集testdata看一下长什么样子
这样我们就完成了第一次csv读入SAS的实验,当然我们在读入的过程中,假设原始数据是非常规范的。但是在现实工作中,数据往往没那么简单,哈哈,所以需要使用一些辅助的options来完成正确的读入。
SAS Option Samples
3
我们今天先来看那么一两个,大家可能会发现我们刚刚的原始csv文件缺少第一行的变量名,而在通常情况下我们的外部数据集都是有第一行变量名的,如下:
那么这个时候就要小心了,因为SAS默认是从第一行开始读,这时我们需要告诉SAS从第二行开始读,此时用到的命令firstobs
如果我们只想读入部分数据,比如读入5个数据,那么程序如下:
如果你在运行中遇到什么问题,请联系小客服获得帮助
转发此文你还可以获取本文里使用的数据和Code哦!
想亲眼看到SAS在实际建模中的使用吗?想对Risk有进一步的了解吗?下面有一个无与伦比的机会哟!
我总在想,我上学的时候为什么没有这样的机会,好气噢~
请大家敬请期待下一期的前沿分享哟!
前沿教育
看见未来 脚踏实地
团队之力 助梦飞翔
领取专属 10元无门槛券
私享最新 技术干货