我有一个使用informat将字符转换为数字的代码,并且我使用length函数作为informat的值。
但是,我对这种方法有误。
此问题的背景是之前的信息是固定值。我想增强信息格式的代码以使其灵活并删除固定值。
代码前:
data work.test;
emp_input = '168643123'
emp_value = input(emp_input, 6.);
run;
我当前的测试代码:
data work.test;
emp_input = '168643123'
emp_value = input(emp_input, length(emp_input).);
run;
我希望将字符'168643123'转换为数字168643123的结果。
在代码之前使用输出为:数字168643。
答案 0 :(得分:2)
那是无效的语法。您必须使用inputn an,然后为该格式生成一个字符串。
data work.test;
emp_input = '168643123';
emp_value = inputn(emp_input, cats(put(length(emp_input),3.),'.'));
run;
但最好使用使用BEST32。所有长度不超过32个字符的通用数字。
data work.test;
emp_input = '168643123';
emp_value = input(emp_input, BEST32.);
run;
答案 1 :(得分:1)
输入需要第二个参数的文本值。
INPUTN()或INPUTC()可以将第二个参数用作字符串/字符/变量,并使用该参数来应用格式。您必须先将其转换为字符串。
答案 2 :(得分:1)
为什么?当信息的宽度大于要读取的字符串的长度时,INPUT函数很乐意进行调整。只需使用信息允许的最大宽度即可。
emp_value = input(emp_input,32.);
如果您确实想限制读取的字符数(数字后面是否有字母?),则可以使用INPUTN()函数(或INPUTC()函数获取字符结果)。通过在字符串末尾附加一些X并使用宽度在X之前停止的信息格式进行测试。
emp_value = inputn(cats(emp_input,'XXX'),cats(length(emp_input),'.'));
答案 3 :(得分:0)
此代码对我有用。这是基于您所有的答案。非常感谢你!
data work.test;
emp_input = '168643123'
emp_value = inputn(emp_input, cats(length(emp_input),'.'));
run;