的SAS教程:加载制表符分隔的文件

2008年1月25日通过:闪现7

sas.jpg

想象一下,你是给了加拿大主要的政治捐款清单,并希望加载到的SAS作进一步分析它。 这份名单是在一个由制表符分隔的文本文件等。 SAS企业指南(乙二醇)提供向导自动导入各种格式的文件,但使用这些GUI的优先于在进口自动化或其他处理的机会。 使用代码加载数据有几大优势:

  • 能重新数据多个数据集
  • 清理和能力过程中修改数据加载时间
  • 能够删除不需要的数据
  • 可移植性和可重用性

前提条件

  • 的SAS v9.x或4.x的SAS企业指南
  • 基本知识的SAS数据步
  • 基本知识如何加载和执行的SAS程序
  • 基本知识的数字和字符格式
  • 访问SAS的读/写文件空间

下载

以1:基本装载机

打开程序tab1.sas的SAS(SAS企业的使用指南4可以交替开放为tab1的代码图标的SAS工程设计窗口的LoadTabDelimit项目文件并双击)。

03.jpg

正如你可以看到上面的截图,读取文本文件的SAS使用数据的步骤。 两项声明的最低需要正确加载文本文件:

  • INFILE -在INFILE语句指定文本文件被加载。 完整的路径可以指定(如同在这个例子中)或相对路径的SAS的默认文件目录即可使用。
  • 输入 -输入语句指定应该从文本阅读文件,应如何阅读领域。

首先,让我们来看看INFILE语句。 为了使这个例子工作,你可能要改变'R的路径:\ namelist.txt'到制表符分隔的文件的位置。 还有两个选择包括在INFILE语句:

  • DLM -在DLM选项允许用户设置一个文件中的字段之间的分隔符。 在这种情况下,我们所指定的'09'×作为分隔符,这是制表符六边形的代表性。 其他常见的符包括逗号和空间。 分隔符应该在单引号。 如果DLM选项不包括的SAS假定分隔符是一个单一的空间
  • 渠务署 -渠务署选项指示数据步骤当作当前变量的空值连续的分隔符。 如果没有这个选项,北欧航空公司只会跳到实地数据的下一个项目,并读入当前数据的步骤变量,它可能导致不合理调整该文件的数据变量和负载不正确。 渠务署还删除两边的引号从文本文件时,读取数据。

接下来,让我们来看看INPUT语句。 创建变量名来存储每个字段顺序将数据读入集。 有输入的语法的几个变种。 本例中的语法指定每个变量到底应该如何读。 目前,该代码指示的SAS读入文本字段是最多16个字符($ 16的所有数据。)。 还有许多其他的方法来阅读这些领域,其中一些稍后将涵盖。

04.jpg

运行tab1的代码应该产生一个数据集上述相同的屏幕。

以2:更新的数据类型

tab1的加载的所有领域为16个字符的文本,但可能不适合纯粹的数值字段。 首先,假设你想出来的人谁是18岁以下过滤器(我们将尽后)。 如果年龄是留在字符格式,你会出10-17岁的人,但不是那些2-9岁,自数字2,3,4,...,9有更大的ASCII值滤波比18号1。 你可以纠正在执行转换成数字比较的文本字段为数字的问题,但它也同样容易阅读到一个数字变量外地直接。

其次,有人可能想将之列入“加拿大保守党党党化”,而不是简单的“保守”。 在党长期形成的名称是25个字符长,将被截断,如果到了16字符变量读取。

05.jpg

要解决这些问题,更改年龄变量改为3位数(3数据。)和改变党的变量改为32个字符变量($ 32的数据。)。

06.jpg

运行tab2代码。 列标题的年龄现在应该包含一个圆形蓝色象征,而年龄列的数据是正确的,合理的。 这表明,列包含数值数据。

以3:删除标题行

传入的文本文件通常包含在第一行中的字段名称。 这是不必要的,因为变量名是在数据输入语句定义的一步。 默认情况下,标题行读取数据,这是不可取的。 有几个逻辑可以用来消除所有权类型的行,但如果你一定行的标题将始终在第一行(即没有空白头行),那么最简单的方法是不输出的第一行。 这可以使用_N_,SAS的输入记录计数器。 当_N_ = 1,数据不会被输出到最终的数据集。

07.jpg

阿if语句被用来测试_N_价值的子集。 这语句采用的一般形式
中频 < 条件;
如果条件计算为false,数据步程序流返回顶端而不执行的代码子集下的任何话。 在这种情况下,子集if语句将评估为true只有在输入记录大于1,这意味着隐含的输出语句才会触发如果该记录不被读取,在输入第一个记录。

08.jpg

运行tab3代码,并确保输出不包含标头名称(见上文)。

以4:删除不良数据

最后,一个SAS程序员会遇到两种不良的数据类型:

  • 数据可以被救活,或者至少需要被标记
  • 数据是绝对没有用,可以丢弃

一般来说,后一类的应尽量减少到接近零,因为有很多地方junking没有进一步分析数据,将不会影响最终产品的一些实例。 但是让我们假设,对这项工作,该捐赠的资料,根本无法使用,除非它包含一个姓和名。 该tab3输出包含与姓氏“史密斯”,但没有任何附带的名字蒙特利尔居民。 我们可以在此记录,任何类似的纪录摆脱相结合的命令条件逻辑LENGTHN和 DELETE。

09.jpg

LENGTHN返回非字符串中的空白字符。 如果LENGTHN比较的值为0,我们可以放心,被评估的领域要么是空或空白字符组成。 DELETE命令防止被写入到输出数据当前记录集。

10.jpg

运行表4的代码,并确保输出记录包含7个记录。 记录都不应包含空白的第一个或最后一个名称(见上文)

以5:筛选数据

最后,我们必须制定一种方法,处理数据,不是很实用,但都不可能得到纠正。 在我们的数据来看,是不可能未成年人将是一个沉重的任何特定一方的财政贡献,虽然同样是不可能有人超过120岁。 现在可能是最好分开作进一步评估其他数据的记录。 幸运的是,使它的SAS允许被处理过的数据发送到多个输出数据集容易。 以下修改必须作出表4代码

  • 数据声明的开放需要指定多个数据集,一个干净的数据和需要被调查的数据之一
  • 输出命令必须明确的定义。 需要处理的数据可向其中的数据集的一些条件,将决定是否需要进一步调查数据为基础

11.jpg

见上面的截图。 在代码的顶部,现在的DATA语句定义了两个数据集:

  • tab_v5将存储记录,不需要修改
  • tab_v5_reject将存储记录需要进一步调查

现在看看代码底部。 有两个明确的输出命令,分别由数据集,名在后。 这些数据将被写入tab_v5如果人在18岁至创纪录的120。 否则,数据将被写入tab_v5_reject。 任一输出语句的执行假定该记录没有被删除,通过逻辑中添加表4。

12.jpg

13.jpg

运行tab5代码。 两个数据集必须出示 - 一个包含6范围内18-120年龄和其他记录包含与年龄此范围外的一条记录。

计算机软件 ,并进行统计分析演示。 对SAS 软件的信息和教程,获得帮助,在网上预订。 Microsoft Office软件 ,包括统计分析,在Excel中,但这个软件没有奇迹。 当购买软件,拿起反病毒防火墙软件 防病毒具有所有最新的病毒软件的定义是诺顿防病毒软件 在今天的电话的发展,这是一个必须投资在网络电话的手机。

提起下: 发展教程
标签

留下回复

的captcha
输入您在上面看到的信件。