如何将带有字符和数字变量的变量转换为sas中的数字变量

时间:2014-05-13 14:07:32

标签: sas proc

我查看了与该主题相关的先前链接,并尝试使用这些命令,但它显示错误。 我有一个变量var1 = 人口普查区244.1 ,其字符格式为长度25.我需要一个最终变量,它只包含数字244.1,格式应为数字

我使用了以下命令: newvar = input(var1,8。) 但它显示错误,认为它是函数INPUT的无效参数。

我也用过: newvar = input(var1,best32。)但同样出现与上面相同的错误信息。

我试图删除“人口普查”字样。单词使用: TRACT = tranwrd(var1," Census Tract",''); 消息说var1被定义为字符和数字变量

我的选项用完了。所以需要帮助。我使用的是sas 9.3

1 个答案:

答案 0 :(得分:1)

您必须分两步完成此操作:

提取字符“244.1”

由于我们只对244.1感兴趣,我们将摆脱其余部分。这可以通过多种方式完成,其中一种方式是你指出的转发。

var2 = substr(var1, 13, 6);

将字符值“244.1”转换为数字244.1

我们需要取字符值并转换为数字。输入函数允许我们获取字符值并使用信息将其转换为数字。信息只是告诉sas如何解释价值的一种方式。在这种情况下,将其视为以8个字节存储的数字。

var3 = input(var2, 8.); 

完整的示例程序:

data work.one;

   var1 = "census tract 244.1";
   var2 = substr(var1, 13, 6);
   var3 = input(var2, 8.);

run;

/* Show that var3 is a numeric variable */
proc contents data=work.one;
run;

奖励信息

请注意,您无法将转换后的值保存回原始的“var1”变量,因为一旦将其声明为字符变量,就无法存储数字。如果你想保留相同的变量,则必须删除var1,然后将var3重命名为var1:

drop var1;
rename var3=var1;