我在SAS中有一个表,其中包含我想要的格式信息。我想将此数据分类为给定的类别。
我不知道该怎么做,是根据数据创建xform或格式文件。
一个示例表如下:
TxtLabel Type FmtName label Hlo count
. I FAC1f 0 O 1
1996 I FAC1f 1 2
1997 I FAC1f 2 3
我想用1997年之后或1996年之前的不同数据集对所有年份进行约会。
问题是我知道如何通过对其进行硬编码来实现此目的,但是这些文件每次都会更改数字,因此我希望使用表中的信息来生成垃圾箱,而不是对其进行硬编码。
如何使用来自另一个数据集的列对数据进行分类来进行分类?
修改
我有两个数据集,一个看起来像我包含的数据集,另一个具有名为“ YEAR”的列。我想使用来自第一个的类别对第二个数据集进行装箱。在这种情况下,TxtLabel有两个可用的年份。有很多这样的表,我正在研究如何从表中生成PROC格式代码,而不是对值进行硬编码。
答案 0 :(得分:2)
这应该运行以创建所需的格式
Proc FORMAT CNTLIN=MyCustomFormatControlData;
run;
然后可以在DATA步骤中使用它,或将其应用于数据集中的列。
禁止数据绑定可能被解释为“数据集拆分”,但您的问题并不清楚。通用任意拆分通常使用以下技术之一完成:
Proc SQL
或Proc FREQ
步骤中获得的信息填充的宏变量解析的。hash
对象进行动态数据拆分以对内存中的记录进行分组,并通过.output()
调用将其保存到数据集中。用于显式合并的示例代码
data want0 want1 want2 want3 want4 want5 wantOther;
set have;
* explicit wall paper;
select (put(year,FAC1f.));
when ('0') output want0;
when ('1') output want1;
when ('2') output want2;
when ('3') output want3;
when ('4') output want4;
when ('5') output want5;
otherwise output wantOther;
run;
这是宏生成的源代码可以生成并需要的结构
when/output
行如果这是您要尝试的数据处理:
Proc FORMAT
Proc FORMAT
has a CNTLIN
option用于指定包含格式信息的数据集。 Output Control Data Set文档中描述了输入控制数据集(CNTLIN)的结构和期望值。一些重要的控制数据列是:
FMTNAME
指定一个字符变量,其值是格式或信息名称。LABEL
指定一个字符变量,其值与格式或informat相关联。开始
指定一个给出范围起始值的字符变量。END
指定一个字符变量,该变量给出范围的结束值。
随着要创建的自定义格式的要求越来越复杂,您将需要在输入控制数据集中拥有更多的信息变量。