R2 | #30天专注橙长计划#~SAS~Day 08



第二章 将你的数据放入SAS(2.1-2.11)

2.1 将你的数据放入SAS的方法

你可能有各种形式的数据,包括手写在纸上、存放在电脑上、或是在数据库管理系统里,不论如何,总有一种方法可以让SAS来读取。

SAS读取的数据的方法主要有以下几种类型:

 直接输入;

 从原始数据文件中创建一个SAS数据集(creating SAS data sets from raw data files);

 将其他软件中的数据文件转换成SAS数据集;

 直接读取其他软件的数据集;

直接输入

 Viewtable窗口可以让你以表格形式输入数据,可以定义变量、设置属性,如name、length和 type(character or numeric).

 SAS 企业向导模块,a Windows only application,has a data entry window that is very similar to the Viewtable window.As with Viewtable,you can define variables and give them attributes.

 SAS/FSP 模块,是Full Screen Product的简称,可以设计定制的数据输入窗口,也有检测数据输入错误的功能(The SAS/FSP product is licensed separately from Base SAS software.)。

从原始数据文件中创建一个SAS数据集 你有两种方法读取原始数据文件:

 数据步可以读取任何形式的原始数据文件,这种方法还将在2.4中详解。

 导入向导(Import Wizard)、导入过程(IMPORT procedure)适用于UNIX、OpenVMS和 Windows操作环境的简单方法,可以读取CSV(comma-separated values)和其他一些限定的文件类型。

将其他软件中的数据文件转换成SAS数据集 如果数据在一个软件中以某种格式存放,但需要用另一种软件分析时,就会很麻烦。有几种方法可以将某种软件中的数据转换成SAS数据集:

 如果安装SAS/ACCESS模块,可以用导入过程(import procedure)和导入向导(Import Wizard)将Excel、Lotus、dBase和Access文件导入SAS数据集,见2.3和2.17(?)。

 如果没有安装,可以用存放数据的软件创建一个原始文件,并用数据步或导入过程(import procedure)读取。很多软件都可以创建CSV文件。

 Windows操作环境下也可以用动态数据交换技术(Dynamic Data Exchange,DDE),见2.18。前提是必须有一个其他的Windows程序与SAS同时运行,再使用DDE和数据步。

直接读取其他软件的数据集

 SAS/ACCESS产品可以不用转换数据格式读取数据,并适用于大部分大部分数据库管理系统,包括ORACLE,DB2,INGRES和 SYBASE(但使用方法本书没有介绍)。

 使用Excel engine和Access engine来读取这两种类型的数据。(SAS帮助文档)

 还有其他的一些数据引擎(data engines)来读取数据,如SPSS engine(附录D),查找帮助文档找到适合你操作环境的所有有效engine。

2.2 用Viewtable窗口输入数据

调用Viewtable窗口,在工具栏的下拉菜单中选择表编辑器(Table Editor)


列属性窗口 每一列顶部的字母是默认的变量名,右击变量名,即可打开列属性(column attributes)窗口,设置属性之后,点击应用(apply),设置完后关闭即可。


输入数据


保存表 选择文件(file)——另存为(save as),选择一个逻辑库保存,如果想保存在新的逻辑库,点击创建新逻辑库图表(New Library),输入逻辑库的名字和保存路径。

打开一个已有的表 首先打开表编辑器,选择文件(file)——打开(open)。打开之后,SAS默认的是浏览模式,如果要对数据进行编辑,则要在编辑(edit)菜单中选择编辑模式。也可以在资源管理器窗口中双击打开一个已有的表。

其他功能 其他一些功能包括排序、打印(printing)、增加和删除行、一次浏览一行(窗体视图Form View)、一次浏览多行(表视图 Table View)。图标和菜单都可以选择这些功能。

在SAS程序中使用表 如下程序语句可以将表内容输出打印:

PROC PRINT DATA=Sasuser.coffee;

RUN;

2.3 用导入向导(Import Wizard)读取文件

导入向导会浏览你的文件以决定变量的类型,并默认数据表的第一行存放变量名。

第一步,从文件(file)下拉菜单中选择导入数据(import data)导入向导(Import Wizard)


第二步,从standard data sources中选择要导入的数据类型。以comma separated values(*.csv)为例。点击下一步

第三步,指定要导入的文件位置,SAS默认第一行存放变量名,从第二行开始存放数据。Options可以改变这种默认选择。


第四步,选择数据集要存放的逻辑库,并为数据集取一个名字(member)。


最后,导入向导创造一个proc import语句,可以是SAS再次导入这个数据。


另外,对于一些类型的数据文件还有额外的步骤,比如Microsoft Access文件,你需要输入数据库名和药导入的表名,有时甚至还要输入user的ID号和密码。

在SAS程序中使用导入数据 比如你将数据存放在work逻辑库,并署名为flowers,那么你可以这样来输入它:

PROC PRINT DATA=WORK.flowers;

RUN;

由于work是默认的逻辑库,所以也可以直接这样:

PROC PRINT DATA=flowers;

RUN;

2.4 告诉SAS你的原始数据在哪

如果数据是原始数据(比如text,ASCII,sequential,flat files),那么用数据步来读取能带给你最大的灵活性。但首先你要告诉SAS你的原始数据在哪。

原始数据可以通过文本编辑器(text editors)或系统命令。对PC使用者来说,原始数据没有相关联的应用程序(就像doc文件与word相关联,双击doc程序就默认调用word程序以打开),有时他们会与像Microsoft Notepad这样的简单编辑器相关联。

内部原始数据 如果直接将数据输入SAS程序中,那么数据就是SAS内部数据。DATALINES是一个指示,告诉SAS下面跟着是数据行,直到分号结尾,这个分号可以另起一行,也可以接在数据的后面。也可以用card代替DATALINES。下面是一个程序,这个程序创建了一个USPRESIDENTS数据集。(Input语句还将在2.5和2.15中讨论)

外部原始数据 数据外SAS程序外部时,使用INFILE语句告诉SAS外部数据的文件名和存放路径,它在data语句之后,在INPUT语句之前。INFILE后面的文件名和路径要用引号,各种系统的引用方式各不同:

假设有一个President.dat数据在你的C盘的MyRawData目录中,

那么可以用如下方式引用这个外部数据:

SAS日志 读取外部数据时,SAS日志会给一些很有用的信息,检查这些信息可以解决一些问题,比如对比INFILE语句读取的记录数和数据集中实际观测值,可以确定SAS是否正确的读取了数据。上面程序的日志如下图所示,


过长记录 在一些操作环境中,SAS假定外部数据文件的记录长度为256或更少(记录长度是指某行中的字符数,包括空格),如果长度过长,SAS不能读取全部,此时需要在INFILE语句中使用LRECL=来指定长度,这个长度必须是数据中最长行的长度,如:

                                            INFILE’c:\MyRawData\President.dat’LRECL=2000;

可以通过SAS日志来查看最大记录长度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容