如何将仅为数字的字符数据转换为以逗号分隔的数字
这是我想要做的事情,而且我不知道我做错了什么,因为它没有在结果中显示逗号:
data work.bla;
input numba $ numba2 $;
datalines;
123456 110204
100 45647
;
run;
data work.bla2;
set work.bla;
newvar = input(numba,comma13.);
run;
谢谢!
答案 0 :(得分:0)
将字符值转换为数字的简单方法是将其乘以1.然后,您可以应用格式comma13.
将数字表示为逗号分隔。 SAS会自动尝试将值转换为数字。你会在日志中看到,
字符值已在以下位置转换为数值:(行):(列)。
data bla2;
set bla;
newvar = 1*numba;
format numba comma13.;
run;
如果您不想在日志中使用该功能,则可以使用input
功能将该字符作为数字读取。
请记住,input
只是将字符串转换为数字值。它正在寻找可以读取的预先指定的模式,然后将这些值转换为计算机可操作的数字。您已经告诉SAS寻找一个用逗号分隔的数字模式,这是您的数据集所没有的。相反,您想告诉SAS这些字符实际上只是未格式化的数字。您希望8.
功能使用input
。
data bla2;
set bla;
newvar = input(numba, 8.);
format numba comma13.;
run;
如果您的数据集中包含逗号分隔的数字,则原始解决方案将起作用。您需要添加的是format
语句。
data work.bla;
input numba $ numba2 $;
datalines;
123,456 110,204
100 45,647
;
run;
data work.bla2;
set work.bla;
newvar = input(numba, comma13.);
format newvar comma13.;
run;
答案 1 :(得分:0)
您的代码会将字符串转换为数字,但要让SAS使用逗号分隔符显示该数字,那么您需要将COMMA
格式附加到其中。
data work.bla2;
set work.bla;
newvar = input(numba,comma13.);
format newvar comma13.;
run;
COMMA13.
格式适用于-999,999,999和9,999,999,999之间的整数。
请注意,使用COMMA13.
的 INFORMAT 表示原始字符变量可能包含逗号,但仍会转换为数字。