将字符串转换为数字并将句点更改为逗号分隔符 sas
Convert string into numeric and change period to comma seperator sas
我有一个名为 weight
的字符串 85.5
我想将其转换为数字 85,5
并使用 SAS 将小数点分隔符替换为逗号。
到目前为止,我正在使用这种(混乱的)两步法
weight_num= (weight*1);
format weight_num COMMAX13.2;
如何以不那么笨拙的方式实现这一目标?
您的示例代码是更改变量类型的推荐方法。
另一种方法是 transtrn
函数来替换 .用逗号。如果您不打算对值进行任何计算,这只是一个好方法。
data have;
set sashelp.class;
keep name weight:;
weight_char=put(weight, 8.1);
run;
data want;
set have;
weight_char=transtrn(weight_char, ".", ",");
run;
proc print data=want;
run;
如果您只想更改它以便将逗号用于小数点而不是句点,那么为什么不使用简单的字符替换。您还想将千位分隔符从逗号更改为句点吗? TRANSLATE()
很适合。
weight = translate(weight,',.','.,');
如果您想将其转换为数字,请使用 INPUT()
函数而不是强制 SAS 为您转换。
weight_num = input(weight,comma32.);
然后您可以将您想要的任何格式附加到新的数值变量。
我有一个名为 weight
的字符串 85.5
我想将其转换为数字 85,5
并使用 SAS 将小数点分隔符替换为逗号。
到目前为止,我正在使用这种(混乱的)两步法
weight_num= (weight*1);
format weight_num COMMAX13.2;
如何以不那么笨拙的方式实现这一目标?
您的示例代码是更改变量类型的推荐方法。
另一种方法是 transtrn
函数来替换 .用逗号。如果您不打算对值进行任何计算,这只是一个好方法。
data have;
set sashelp.class;
keep name weight:;
weight_char=put(weight, 8.1);
run;
data want;
set have;
weight_char=transtrn(weight_char, ".", ",");
run;
proc print data=want;
run;
如果您只想更改它以便将逗号用于小数点而不是句点,那么为什么不使用简单的字符替换。您还想将千位分隔符从逗号更改为句点吗? TRANSLATE()
很适合。
weight = translate(weight,',.','.,');
如果您想将其转换为数字,请使用 INPUT()
函数而不是强制 SAS 为您转换。
weight_num = input(weight,comma32.);
然后您可以将您想要的任何格式附加到新的数值变量。