【问题标题】:how to convert a variable with both character and numeric variable into a numeric variable in sas如何将具有字符和数字变量的变量转换为sas中的数字变量
【发布时间】:2014-05-13 14:07:32
【问题描述】:

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

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

我也用过: newvar = input (var1, best32.) 但还是和上面一样的错误信息。

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

我已经没有选择了。所以需要帮助。我正在使用 sas 9.3

【问题讨论】:

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

标签: sas proc


【解决方案1】:

您必须分两步完成:

提取字符“244.1”

由于我们只对 244.1 感兴趣,因此我们将摆脱其余部分。这可以通过多种方式完成,正如您所指出的,其中一种方式是 tranwrd。

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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 1970-01-01
    • 2023-02-21
    • 2021-07-07
    • 2016-11-29
    • 2013-11-17
    • 1970-01-01
    相关资源
    最近更新 更多