我查看了与该主题相关的先前链接,并尝试使用这些命令,但它显示错误。 我有一个变量var1 = 人口普查区244.1 ,其字符格式为长度25.我需要一个最终变量,它只包含数字244.1,格式应为数字
我使用了以下命令: newvar = input(var1,8。) 但它显示错误,认为它是函数INPUT的无效参数。
我也用过: newvar = input(var1,best32。)但同样出现与上面相同的错误信息。
我试图删除“人口普查”字样。单词使用: TRACT = tranwrd(var1," Census Tract",''); 消息说var1被定义为字符和数字变量
我的选项用完了。所以需要帮助。我使用的是sas 9.3
答案 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;