Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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 - Fatal编程技术网

将字符串转换为数字,并将句点更改为逗号分隔符sas

将字符串转换为数字,并将句点更改为逗号分隔符sas,sas,Sas,我有一个名为weight的字符串,即85.5 我想将其转换为一个数字85,5,并使用SAS将十进制分隔符替换为逗号 到目前为止,我正在使用这种(混乱的)两步方法 weight_num= (weight*1); format weight_num COMMAX13.2; 如何以不那么笨拙的方式实现这一点???您的示例代码是更改变量类型的推荐方法 另一种方法是使用transtrn功能来替换。用逗号。只有在您不打算对这些值进行任何计算时,这才是一个好方法 data have; set sashelp

我有一个名为
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.);

然后可以将任何格式附加到新的数值变量

我不知道你想做什么。如果权重是一个字符变量,它将始终保持在datastep中的一个字符变量,则必须构建一个临时变量,删除字符权重,并在下一个datastep中将临时变量重命名为权重:
data x;设置您的数据;格式权重_num COMMAX13.2;重量_num=重量;落锤;跑数据你的数据;集合x(重命名=(权重_num=权重));运行@kl78:太好了,所以在应用新格式之前,我不必先将字符转换为数字。(为了澄清,我编辑了我的问题)是否要将字符变量转换为数字变量?还是另一个字符变量?另外,对于无法转换为数字的值,您希望如何处理?