我有一个包含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;
答案 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 ;