Sas 使用proc格式设置缺少的值

Sas 使用proc格式设置缺少的值,sas,proc-format,Sas,Proc Format,我是SAS的新手,我使用proc格式为代码赋予值: proc format; value code_to_value -1 = . 1 = 0.5 2 = 0.25 3 - high = 0; run; 然后将其转换为数据集中的数字列 DATA foo; SET bar; my_var = put(my_var ,code_to_value.); RUN; 问题是此代码将所有-1代码设置为,但将其作为字

我是SAS的新手,我使用
proc格式
为代码赋予值:

proc format;
    value code_to_value
        -1 = .
        1 = 0.5
        2 = 0.25
        3 - high = 0;
run;
然后将其转换为数据集中的数字列

DATA foo; 
    SET bar;
    my_var = put(my_var ,code_to_value.);
RUN;
问题是此代码将所有
-1
代码设置为
,但将其作为字符,而不是缺少的值

如何将其设置为missing?

函数创建一个字符值。如果要转换回数值,请与
input()
组合,例如:

DATA foo; 
  SET bar;
  my_var = input(put(my_var ,code_to_value.),best.);
RUN;
艾伦的
输入(put
是一种非常常见和合法的构造

这里有更多的信息来加深理解

Proc FORMAT
value
语句创建一个
格式
。格式始终执行“到文本”的映射

  • 数字格式将数字值映射为字符值
  • 字符格式将字符值映射为字符值
  • 可以使用
    PUT
    PUTC
    PUTN
    函数以编程方式应用格式
invalue
语句创建一个
informat

  • 数字信息将字符值映射为数字值
  • 字符信息将字符值映射到字符值
  • 可以使用
    INPUT
    INPUTN
    INPUTN
    函数以编程方式应用信息
没有直接将数值映射到数值的格式/函数组合

在使用指定的数字信息之前,将
INPUT()
与数字一起使用将执行到字符的隐式转换(这本身不是一件坏事)。此示例显示
INVALUE
INPUT

proc format;
    invalue code_to_value
        -1 = .
        1 = 0.5
        2 = 0.25
        3 - high = 0;
run;

data have;
  do my_var = -2 to 4; output; end;
run;

DATA want; 
    SET have;
    my_varx = input(my_var, code_to_value.);
RUN;
----- LOG -----
NOTE: Numeric values have been converted to character values at the places given by: