的SAS教程:与创建进程内格式分类
2008年2月28日通过:闪现7 当执行数据上的人口数分析,通常是可取的分类,特点,可以有许多值。 年龄,收入水平和信用卡评分是人口属性,可放入“桶”,轻松地分析了大类基础(不必诉诸线性或logistic回归)的例子。 虽然可以迅速变量编码使用的IF语句,SAS的格式的程序提供了一个更优雅和便携式解决方案。
前提条件
- 的SAS v9.x或4.x的SAS企业指南
- 基本知识的SAS数据步
- 基本知识如何加载和执行的SAS程序
- 基本知识如何加载和保存的SAS数据集
- 访问SAS的读/写文件空间
下载
该方案

所提供的数据集包含人随机组的基本信息。 考虑到数据集,有三列代表的名字,姓氏,每个人的年龄。 假设某些性能进行分析,将在人口提供 - 按年龄分类,可辨识的趋势十分有用。
以1 - 分类与IF语句
假设你要进行分类10的:10-19,20-29,30-39和40年龄+。 输入数据可以被加载到SAS 数据的步骤,通过使用IF语句创建一个分类变量扩展。 具体来说,我们可以执行下列操作:
- 创建一个新的数据集,作为从源头上提供的数据
- 创建一个类变量
- 年龄分类,放置在类变量的结果
打开程序cat1.sas的SAS(SAS企业的使用指南4可以交替开放为cat1代码图标的SAS工程设计窗口的分类项目文件并双击)。

正如你可以看到上面的截图,该代码创建一个名为库catv1的工作提出了新的数据。
- 默认输入设置为nameage数据集提供本教程
- 一个16个字符变量age_category创建举行时代变文字分类
- 一个 IF / elseif的条件结构用来计算为每个参加者的年龄记录桶分类
数据公布后一步,发出打印PRoC的显示输出的catv1

运行cat1代码应产生输出如上所示
以2 - 分级使用自定义格式
使用IF / ELSIF声明容易得多,相信足够如果你只有一个变量进行分类...知道你不会使用其他任何一段代码相同的分类,或使用不同的变量相同的分类。 如果你不能保证这些条件,那么你就会停留在复制/粘贴编码的陷阱。 任何“变化”的分类将必须手动为每个每一段代码变量重新配置 - 一个耗时且容易出错的过程。
幸运的是,SAS提供的格式化程序,可用于创建字符或数字输入集中的分类。 使用格式化程序的优点包括以下内容:
- 格式可以适用于任何在多个SAS程序变量的数量
- 对格式的更改将被应用到每个目标变量的下一次执行任务代码
- 灵活地嵌入程序代码的格式或创建自包含的程序
- 格式可以存储在临时或永久性的SAS库
考虑到这一点,让我们返工这一取代,在有条件的格式化程序结构代码。 打开SAS程序cat2.sas查看代码。

格式化程序开始一项议事FORMAT语句和结束一个运行的声明(不区分大小写)。 在这个声明的价值,可以用来定义一个格式结构。 多值语句内可以发出一个格式的程序。
在这种情况下,我们定义了一个标准格式,称为诊断系统 。 这种格式将数字转换成文本输入值为基础的分类。 (注:转换文本输入值,发生在该格式的名称 - $诊断系统前端$)。
单输入值或输入值的范围是通过简单的公式分配格式值。 在这种情况下,输入值范围(如10-19)被分配单一的案文为基础的,格式化的价值观。
关键字高意味最大的可能值的数据集。 此关键字基本上是一个收集所有上述范围的开始值。 适用于该用户的格式,任何40岁以上的输入值将被指定格式的值'40 +'。 同样,关键字可以使用低代表最低值可能的数据,可以在底部采用高端无所不包的类别。
我们的用户定义的格式,现在可以应用到任何数字变量通过PUT语句。 因此,数据的步骤不再需要复杂的条件语句,可以在指定分类一行值age_category。
只要表现出灵活性,用户定义的格式,一个新变量age_in_5还建立。 这个变量显示了年龄组的每个人将属于由现在至5年。 请注意,赋值语句是相同的,只是5年前增加了格式的时代,age_category。
数据公布后一步,发出打印PRoC的显示输出的catv2

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









感谢的人
谢谢你,非常好,有帮助
伟大的! 正是我一直在寻找!