如何在SAS中将缺少的值设置为NULL

如何在SAS中将缺少的值设置为NULL,sas,Sas,我试图在SAS数据集中为数值变量将缺失值设置为NULL, 我该怎么做 sas中的缺失为空 从字面上理解这个问题,并假设您希望为任何缺少的值显示字符串NULL——一种方法是定义自定义格式并使用该格式: proc format; value nnull .a-.z = 'NULL' . = 'NULL' ._ = 'NULL' ; run; data _null_; do i = .a,., ._, 1,1.11; put i nnull.; en

我试图在SAS数据集中为数值变量将缺失值设置为NULL, 我该怎么做


sas中的缺失为空

从字面上理解这个问题,并假设您希望为任何缺少的值显示字符串
NULL
——一种方法是定义自定义格式并使用该格式:

proc format;
  value nnull
  .a-.z = 'NULL'
  .     = 'NULL'
  ._    = 'NULL'
  ;
run;

data _null_;
  do i = .a,., ._, 1,1.11;
    put i nnull.;
  end; 
run;

当数据步骤为数字时,可以在数据步骤中将值设置为“缺少”:

age=.;
要检查缺少的数值,请使用:

if numvar=. then do;
或使用缺少的功能:

if missing(var) then do;
在WHERE子句中使用。
查看:

如果您询问如何不显示缺失值的周期,您可以使用:

options missing=' ';
然而,这实际上并没有将它们更改为null,而是更改为空格。SAS必须有一些字符来显示缺失,它不允许没有字符。您还可以选择其他角色,如:

options missing=%sysfunc(byte(255));
甚至

options missing="%sysfunc(byte(0))";
我不推荐后者,因为SAS试图显示它时会导致一些问题


如果要将空间连接到某个位置,则可以修剪空间(使用允许零长度字符串的
trimn()
)。

可能重复如果您不要求显示它,则它可能是重复的,但我不清楚。