的SAS教程:与创建进程内格式分类

2008年2月28日通过:闪现7

当执行数据上的人口数分析,通常是可取的分类,特点,可以有许多值。 年龄,收入水平和信用卡评分是人口属性,可放入“桶”,轻松地分析了大类基础(不必诉诸线性或logistic回归)的例子。 虽然可以迅速变量编码使用的IF语句,SAS的格式的程序提供了一个更优雅和便携式解决方案。

前提条件

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

下载

该方案

tutorial004 - 01.jpg

所提供的数据集包含人随机组的基本信息。 考虑到数据集,有三列代表的名字,姓氏,每个人的年龄。 假设某些性能进行分析,将在人口提供 - 按年龄分类,可辨识的趋势十分有用。

以1 - 分类与IF语句

假设你要进行分类10的:10-19,20-29,30-39和40年龄+。 输入数据可以被加载到SAS 数据的步骤,通过使用IF语句创建一个分类变量扩展。 具体来说,我们可以执行下列操作:

  • 创建一个新的数据集,作为从源头上提供的数据
  • 创建一个类变量
  • 年龄分类,放置在类变量的结果

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

tutorial004 - 02.jpg

正如你可以看到上面的截图,该代码创建一个名为库catv1的工作提出了新的数据。

  • 默认输入设置为nameage数据集提供本教程
  • 一个16个字符变量age_category创建举行时代变文字分类
  • 一个 IF / elseif的条件结构用来计算为每个参加者的年龄记录桶分类

数据公布后一步,发出打印PRoC的显示输出的catv1

tutorial004 - 03.jpg

运行cat1代码应产生输出如上所示

以2 - 分级使用自定义格式

使用IF / ELSIF声明容易得多,相信足够如果你只有一个变量进行分类...知道你不会使用其他任何一段代码相同的分类,或使用不同的变量相同的分类。 如果你不能保证这些条件,那么你就会停留在复制/粘贴编码的陷阱。 任何“变化”的分类将必须手动为每个每一段代码变量重新配置 - 一个耗时且容易出错的过程。

幸运的是,SAS提供的格式化程序,可用于创建字符或数字输入集中的分类。 使用格式化程序的优点包括以下内容:

  1. 格式可以适用于任何在多个SAS程序变量的数量
  2. 对格式的更改将被应用到每个目标变量的下一次执行任务代码
  3. 灵活地嵌入程序代码的格式或创建自包含的程序
  4. 格式可以存储在临时或永久性的SAS库

考虑到这一点,让我们返工这一取代,在有条件的格式化程序结构代码。 打开SAS程序cat2.sas查看代码。

tutorial004 - 04.jpg

格式化程序开始一项议事FORMAT语句和结束一个运行的声明(不区分大小写)。 在这个声明的价值,可以用来定义一个格式结构。 语句内可以发出一个格式的程序。

在这种情况下,我们定义了一个标准格式,称为诊断系统 这种格式将数字转换成文本输入值为基础的分类。 (注:转换文本输入值,发生在该格式的名称 - $诊断系统前端$)。

单输入值或输入值的范围是通过简单的公式分配格式值。 在这种情况下,输入值范围(如10-19)被分配单一的案文为基础的,格式化的价值观。

关键字意味最大的可能值的数据集。 此关键字基本上是一个收集所有上述范围的开始值。 适用于该用户的格式,任何40岁以上的输入值将被指定格式的值'40 +'。 同样,关键字可以使用代表最低值可能的数据,可以在底部采用高端无所不包的类别。

我们的用户定义的格式,现在可以应用到任何数字变量通过PUT语句。 因此,数据的步骤不再需要复杂的条件语句,可以在指定分类一行值age_category。

只要表现出灵活性,用户定义的格式,一个新变量age_in_5还建立。 这个变量显示了年龄组的每个人将属于由现在至5年。 请注意,赋值语句是相同的,只是5年前增加了格式的时代,age_category。

数据公布后一步,发出打印PRoC的显示输出的catv2

tutorial004 - 05.jpg

运行2类代码应产生输出如上所示

提起下: 发展教程
标签

评论

4回应“的SAS教程:与创建进程内格式类别”
  1. beginer 说:

    谢谢你,非常好,有帮助

  2. 托比亚斯 说:

    伟大的! 正是我一直在寻找!

留下回复

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