Sas 将格式为的数字转换为字符串
如何将数字或货币变量转换为字符串,使其格式保持为字符串的一部分 例如,下面的代码有一个字符变量Sas 将格式为的数字转换为字符串,sas,Sas,如何将数字或货币变量转换为字符串,使其格式保持为字符串的一部分 例如,下面的代码有一个字符变量MSRP\u to\u text,和一个货币变量MSRP。当我将MSRP\u设置为\u text等于MSRP时,它接受未格式化的数字并将其转换为字符串,因此美元符号和逗号消失 DATA want; SET SASHELP.CARS(KEEP=MSRP); ATTRIB MSRP_to_text FORMAT=$8.; MSRP_to_text = MSRP; RUN; 换句话说,代
MSRP\u to\u text
,和一个货币变量MSRP
。当我将MSRP\u设置为\u text
等于MSRP
时,它接受未格式化的数字并将其转换为字符串,因此美元符号和逗号消失
DATA want;
SET SASHELP.CARS(KEEP=MSRP);
ATTRIB MSRP_to_text FORMAT=$8.;
MSRP_to_text = MSRP;
RUN;
换句话说,代码当前正在转换$36945->“36945”
,但我真正想要的是$36945->“$36945”
有没有办法在字符串中保留美元符号和逗号?使用PUT函数将数字转换为字符,而不是ATTRIB语句。它将保持文本值的格式。由于MSRP的原始格式为DOLLAR8,所以在put语句中使用相同的格式就足够了
DATA want;
SET SASHELP.CARS(KEEP=MSRP);
MSRP_to_text = put(MSRP, DOLLAR8.);
RUN;
proc contents data=want; run;
v值
函数将检索变量的格式化值
MSRP_as_text = VVALUE(MSRP);
VVALUEX
对于变量名是动态的情况更进一步;例如被存储在不同的变量中,或者是从某种名称模式算法计算出来的
name = 'MSRP';
formatted_value = VVALUEX(name);
你为什么附上8美元。设置新变量的格式?如果要将其长度设置为$8,请使用“长度”属性。没有必要附上8美元。格式化,因为SAS已经知道如何显示字符串。您想在新字符变量中使值左对齐还是右对齐<代码>'$36945'vs
'$36945'
这是一个很好的答案!我认为SAS必须有一些功能,但在搜索了一段时间后,我似乎没有找到正确的关键字组合。我喜欢你添加更多关于VVALUEX
的信息。我从未想过要寻找这样的函数,但它可能真的很有用,谢谢!虽然这个答案有效,但我选择Richard的,因为VVALUE
不需要像PUT
那样的格式。VVALUE
在数据步运行时使用与变量相关联的格式。如果要使用特定或动态格式映射值,而不考虑当前格式或无格式,则可以使用PUT/PUTN/PUTC
函数进行映射。