将作为数据集中的char的所有n_0值更改为N_1值,该值是整个数据集的数值

时间:2016-09-26 16:23:31

标签: sas

假设您导入了一些文件,并且拥有变量

name room# test1 test2 test3 

和n个观察结果。

名称是名称,房间号码是长度为3的房间号码,test1 - test3的评分为0 - 100.

name room# test1 test2 test3
bob  123   90    40     33
bob2 123   a     40     90 
bob3 123   88    k      78
..    

现在,假设我想找到字母k的所有实例,并用数值零替换它们。如何才能做到这一点?我在初始数据步骤中使用if then语句,即

执行此操作
data temp;
   infile = "...." ; 
   if test1 = k then test1=0; 
   if test2 = k then test2=0; 
   if test3 = k then test3=0; 
run;

有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用informat执行此操作。我将.A分配给A值,这是一个特殊的缺失值(它将被视为缺失,但显示为" A"不是"。" )。信息是告诉SAS在读入数字字段时文本字符串应具有的值。

如果您想将AK保持为"缺少"顺便说一句,您将不需要信息;只是missing a k;语句告诉SAS在遇到普通数字读入时将这两个字符视为特殊缺失值。但是在这里你需要信息来正确对待它们,因为你希望K为0。

顺便提一下,我很想建议把它们作为特殊缺失来阅读,并在你用它计算时将K像0一样对待 - 转换为{{1马上丢失信息。

0

答案 1 :(得分:0)

如果您正在阅读文本文件,请使用MISSING语句让SAS知道您希望它包含哪些字母,以便您将其视为特殊缺失值。因此,A字母将成为特殊缺失值.A

missing a k ;
data want;
  input name $ room $ test1 test2 test3;
datalines;
bob  123   90    40     33
bob2 123   a     40     90 
bob3 123   88    k      78
;;;;

现在,如果您想将缺失的值转换为零,那么就会有多个帖子在线,以便如何做到这一点。