如何在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;