将NA更改为SAS中的缺失值

时间:2015-04-07 14:09:26

标签: sas

我有一个包含5个变量的SAV文件。在其中两个中我有NA值(写成字符串。我需要将NA转换为"空值"

想到使用"如果那么重命名"选项但没有成功,因为它只打印出一个观察值或保持NA值不变。 请协助。

data QUS;
if happy=NA then rename happy="";
if educ=NA then rename educ="";
run;
proc print data=QUS;
run;

2 个答案:

答案 0 :(得分:7)

你很亲密。

在SAS中,您需要将字符串放在引号中。 (您的代码会比较变量Happy和NA是否相同,但它不起作用,因为您没有名为NA的变量。)

重命名用于重命名变量名称。

此外,您需要在set statmement中指定数据集。

这将创建与SAV相同的数据QUS,但是快乐并且教育NA被替换为缺失值。

data QUS;
    set SAV;
    if happy="NA" then happy="";
    if educ="NA" then educ="";
run;

proc print data=QUS;
run;

答案 1 :(得分:2)

以下是使用ARRAYS更改所有字符或数值的示例 类似于此答案的内容在此SO answer和SAS社区回答HERE

data HAVE;
    Length id $5 var1 var2 var3 var4 var5 $15;
    Input id $ var1 $ var2 $ var3 $ var4 $ var5 $ num1 num2 num3;
    datalines;
00001 NA VALUE NA VALUE NA . 1 .
00002 VALUE . VALUE NA VALUE 1 . 1
00003 NA VALUE NA VALUE NA . 1 .
00004 VALUE . VALUE NA VALUE 1 . 1
00005 NA VALUE NA VALUE NA . 1 .
;
Run;

data WANT;
    set HAVE; 
    array CHAR _character_ ; 
    array NUM _numeric_ ;
do over CHAR; 
    if CHAR="NA" then call missing(CHAR);
    else if missing(CHAR) then CHAR="WAS MISSING";
end;
do over NUM; 
    if NUM=1 then call missing(NUM);
    else if missing(NUM) then NUM=0;
end;
run ;