为什么我的 proc 格式会更改不相关的变量?

Why is my proc format changing unrelated variables?

这是我的 proc 格式代码:

Proc format;
value $fmtempty
" " = "unknown"
;
run;

这是我对数据集的应用:

DATA ASSIGN1.TRAININGCOPY;

SET TRAININGCOPY;

FORMAT job education $fmtempty.;

RUN;

起初它似乎有效,但 table 只是“愚蠢”。

  1. 它削减了我其余变量的名称,ex management 变成了 managem

  2. 当我运行这段代码时:

    proc 频率数据= ASSIGN1.TRAINING; table的工作; 运行;

为了工作,我的空频从4变成了42。奇怪的是,当我目视检查和过滤数据时,缺失的数据已经按预期补上了,我找不到任何缺失的数据。我在教育方面也有类似的结果。

original          converts to
1   blue-collar  1 bluec
2                2 unknown      
3   management   3 managem  
4   student      4 stude
5   technician   5 techni
6   blue-collar  6 bluec

任何关于我做错了什么的建议,甚至是对实际发生的事情的解释,我们都将不胜感激。提前谢谢你。

更改 Proc FORMAT value 语句以使用 (default=N) 选项。 N 定义在 FORMAT 语句中未指定宽度时为格式分配多少宽度。

示例:

data have;
input text $char20.;
datalines;
blue-collar
            
management 
student    
technician 
blue-collar
;

proc format;
  value $fmtempty (default=20)
    " " = "unknown"
  ;
run;

data want;
  set have;
  format text $fmtempty.;
run;

输出数据集