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

Sas 为什么我的proc格式会更改不相关的变量?,sas,format,proc,Sas,Format,Proc,这是我的proc格式代码: Proc format; value $fmtempty " " = "unknown" ; run; 这是我对数据集的应用程序: DATA ASSIGN1.TRAININGCOPY; SET TRAININGCOPY; FORMAT job education $fmtempty.; RUN; 起初,这似乎很管用,但这张桌子却显得“傻乎乎的” 它削减了我其余变量的名称,前管理变成了managem 当我运行此代码时:

这是我的proc格式代码:

Proc format;
value $fmtempty
" " = "unknown"
;
run;
这是我对数据集的应用程序:

DATA ASSIGN1.TRAININGCOPY;

SET TRAININGCOPY;

FORMAT job education $fmtempty.;

RUN;
起初,这似乎很管用,但这张桌子却显得“傻乎乎的”

  • 它削减了我其余变量的名称,前管理变成了managem

  • 当我运行此代码时:

    proc freq data=ASSIGN1.1培训; 工作表; 运行

  • 对于job,我的频率从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
    

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

    更改
    过程格式
    语句以使用
    (默认值=N)
    选项。N定义在
    格式
    语句中未指定宽度时为格式分配的宽度

    例如:

    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;
    
    输出数据集

    工作和教育的变量有多长?为什么不明确说明您希望在FORMAT语句中包含多少字符?或者在定义格式时设置默认宽度?