我有以下数据集,其中每个主题ID都有一个当前为字符格式的对应值(AVAL)。
data test;
input SUBJID$ AVAL$6.;
cards;
001 97.9
001 119
001 061
001 62
001 151.0
;
run;
基本上,我想将AVAL变量从字符转换为数字。我使用了以下代码。
data test;
set test;
AVAL=input(AVAL,1.0);
run;
当我运行此代码时,我没有得到所需的输出。似乎AVAL变量仍然是字符格式
如何将AVAL变量转换为数字格式?
答案 0 :(得分:0)
这里有几件事。
首先 - 我假设您不能简单地更改初始输入(即,您的第一个数据步骤是说明数据,而不是说明您的代码)。无论如何它有点错误,但最简单的解决方案就是输入AVAL作为数字开始。
第二 - 您无法在不更改名称的情况下将变量更改为数字,但您可以更改名称,然后删除/重命名为“修复”该名称。
第三 - 您的输入语句包含错误的信息。 .
的左侧应该是字符的总宽度 - 因此11.5
是4宽,因此input(charvar,4.)
对于这样的数字是正确的。永远不要放在.
之后的任何东西,现在需要它是如此罕见,以至于简单地说永远不会。
你的最终陈述是这样的:
data test;
set test;
AVAL_N=input(AVAL,12.); *I use 12 to make *sure* it is plenty wide, but probably you can be lower than that - whatever the widest field possible is;
drop AVAL;
rename AVAL_N = AVAL; *so on the OUTPUT it is correct;
run;