如何对 SAS 输出中的列使用 proc 格式
How to use proc format for columns in SAS output
我有以下数据
DATA HAVE;
input year dz . area;
cards;
2000 stroke 08
2000 stroke 06
2000 stroke 06
;
run;
使用proc制表后
proc tabulate data=have;
class area dz;
table area, dz*(n colpctn);
run;
我得到以下输出
我想用“<5”和“0”分别替换“N”列中小于 5 和“ColPctN”列中小于 0 的任何值。
我有下面的 proc 格式代码
proc format;
picture count (round)
0-4 = ' <5' (NOEDIT);
picture pcnt (round)
0 = ' - '
other = '009.9%';
但我不明白如何在数据步骤中使用它来获得所需的结果。请指导。
谢谢!
AFAIK 在 SAS 9.4 中,您可以将您的格式应用于数据集,但 不能 输出 window 的内容(这是您复制上述内容的地方 table 来自)。所以你应该首先将结果导出到一个单独的数据集中:
ods output Table=YourDsName;
proc tabulate data=have;
/*your original code*/
run;
然后 - 如您所说 - 在另一个数据步骤中或通过 proc print
格式化 YourDsName
数据集(如下例所示):
proc print data=YourDsName;
format /*apply your formats here*/
run;
将格式应用为 *f=<format>
交叉统计关键字(在您的情况下为 N
)。因为单元格是数据中存在的分类值的交叉点(交叉点),所以您不会在 colpctn
中看到零,除非您使用 classdata=
预先确定哪些交叉点应该出现在输出中。
DATA HAVE;
input year dz . area;
cards;
2000 stroke 08
2000 stroke 06
2000 stroke 06
;
proc format;
picture count (round)
0-4 = ' <5' (NOEDIT);
picture pcnt (round)
0 = ' - '
other = '009.9%';
proc tabulate data=have;
class area dz;
table area, dz*(n*f=count. colpctn);
/* ^^^^^^^^^ format applied to N */
run;
我有以下数据
DATA HAVE;
input year dz . area;
cards;
2000 stroke 08
2000 stroke 06
2000 stroke 06
;
run;
使用proc制表后
proc tabulate data=have;
class area dz;
table area, dz*(n colpctn);
run;
我得到以下输出
我想用“<5”和“0”分别替换“N”列中小于 5 和“ColPctN”列中小于 0 的任何值。
我有下面的 proc 格式代码
proc format;
picture count (round)
0-4 = ' <5' (NOEDIT);
picture pcnt (round)
0 = ' - '
other = '009.9%';
但我不明白如何在数据步骤中使用它来获得所需的结果。请指导。
谢谢!
AFAIK 在 SAS 9.4 中,您可以将您的格式应用于数据集,但 不能 输出 window 的内容(这是您复制上述内容的地方 table 来自)。所以你应该首先将结果导出到一个单独的数据集中:
ods output Table=YourDsName;
proc tabulate data=have;
/*your original code*/
run;
然后 - 如您所说 - 在另一个数据步骤中或通过 proc print
格式化 YourDsName
数据集(如下例所示):
proc print data=YourDsName;
format /*apply your formats here*/
run;
将格式应用为 *f=<format>
交叉统计关键字(在您的情况下为 N
)。因为单元格是数据中存在的分类值的交叉点(交叉点),所以您不会在 colpctn
中看到零,除非您使用 classdata=
预先确定哪些交叉点应该出现在输出中。
DATA HAVE;
input year dz . area;
cards;
2000 stroke 08
2000 stroke 06
2000 stroke 06
;
proc format;
picture count (round)
0-4 = ' <5' (NOEDIT);
picture pcnt (round)
0 = ' - '
other = '009.9%';
proc tabulate data=have;
class area dz;
table area, dz*(n*f=count. colpctn);
/* ^^^^^^^^^ format applied to N */
run;