如何在sas中将同时包含字符和数字变量的变量转换为数字变量

如何在sas中将同时包含字符和数字变量的变量转换为数字变量,sas,proc,Sas,Proc,我查看了之前与该主题相关的链接,并尝试使用这些命令,但显示出错误。 我有一个变量var1=244.1,它是长度为25的字符格式。我需要一个最终的变量,它将只包含数字244.1和格式应该是数字 我使用了以下命令: newvar=输入(var1,8.) 但它显示了一个错误,将其称为函数输入的无效参数 我还使用了: newvar=input(var1,best32.),但同样出现与上面相同的错误消息 我尝试使用以下方法删除“人口普查区”一词: TRACT=tranwrd(var1,“普查区”); 消息

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

我使用了以下命令: newvar=输入(var1,8.) 但它显示了一个错误,将其称为函数输入的无效参数

我还使用了: newvar=input(var1,best32.),但同样出现与上面相同的错误消息

我尝试使用以下方法删除“人口普查区”一词: TRACT=tranwrd(var1,“普查区”); 消息说var1被定义为字符和数字变量


我别无选择。所以我需要帮助。我正在使用sas 9.3,您必须分两步执行此操作:

提取字符“244.1”

因为我们只对244.1感兴趣,所以我们将去掉其余的。这可以通过多种方式实现,正如您所指出的,其中之一是tranwrd

var2 = substr(var1, 13, 6);
将字符值“244.1”转换为数字244.1

我们需要将字符值转换为数字。输入函数允许我们获取一个字符值,并使用informat将其转换为一个数字。信息只是告诉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;

如果您使用的是数据步骤,那么应该从问题中删除“sql”标记。