Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SAS中将包含数字的字符串转换为带逗号的数字_Sas_Character_Numeric_Comma - Fatal编程技术网

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

如何在SAS中将包含数字的字符串转换为带逗号的数字,sas,character,numeric,comma,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; 谢谢 将字符值转换为数字的简单方法是将其乘以1。然后可以应用格式comma13

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

以下是我想做的,我不知道我做错了什么,因为它在结果中没有显示逗号:

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

data work.bla2;
set work.bla;

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

谢谢

将字符值转换为数字的简单方法是将其乘以1。然后可以应用格式
comma13.
将数字表示为逗号分隔的数字。SAS将自动尝试将值转换为数字。你会在日志中看到

字符值已在以下位置转换为数值:(行):(列)

如果您不想在日志中包含该字符,可以使用
input
函数将字符作为数字读取

请记住,
input
只是将字符串转换为数值。它在寻找一个可以读取的预先指定的模式,然后将这些值转换成计算机可以处理的数字。您已经告诉SAS查找一个由逗号分隔的数字组成的模式,而您的数据集没有该模式。相反,您希望告诉SAS这些字符实际上只是未格式化的数字。您想将
8.
用于
输入功能

data bla2;
    set bla;

    newvar = input(numba, 8.);

    format numba comma13.;
run;
如果数据集中有逗号分隔的数字,则原始解决方案可以工作。您只需要添加一个
格式
语句

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;

您的代码将字符串转换为数字,但要让SAS使用逗号分隔符显示该数字,则需要将
逗号
格式附加到该数字

data work.bla2;
  set work.bla;
  newvar = input(numba,comma13.);
  format newvar comma13.;
run;
COMMA13.
格式适用于-999999999和99999999999之间的整数


请注意,使用
COMMA13.
INFORMAT意味着您的原始字符变量可能包含逗号,并且仍将转换为数字。

不确定这是否是解决方案,但您可以嵌套函数(尽管使用下面的结果将创建一个字符变量…但仍将显示逗号。data work.bla2;set work.bla;newvar=put((输入(numba,comma9.)),comma9。);运行;只是为了澄清-您想要一个看起来有逗号的数字变量,或者您想要一个真正有逗号的字符变量?上面的解决方案,加上下面的答案,都给出了前者。SMW的解决方案给出了后者。请注意,
逗号
informat将读取不带逗号的数字,与相同de>F
informat有。非常感谢!!!所以我只需要一个格式声明。这很有效!谢谢你们的帮助。
data work.bla2;
  set work.bla;
  newvar = input(numba,comma13.);
  format newvar comma13.;
run;