如何将包含数字的字符串转换为SAS中带逗号的数字

时间:2016-01-28 19:36:38

标签: sas character numeric comma

如何将仅为数字的字符数据转换为以逗号分隔的数字

这是我想要做的事情,而且我不知道我做错了什么,因为它没有在结果中显示逗号:

data work.bla; 
input numba $ numba2 $;
datalines;
123456 110204
100  45647
;
run;

data work.bla2;
set work.bla;

newvar = input(numba,comma13.);
run;

谢谢!

2 个答案:

答案 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 表示原始字符变量可能包含逗号,但仍会转换为数字。