如何将数字或货币变量转换为将格式保留为字符串一部分的字符串?
例如,以下代码具有一个字符变量MSRP_to_text
和货币变量MSRP
。当我将MSRP_to_text
设置为MSRP
时,它将采用未格式化的数字并将其转换为字符串,因此美元符号和逗号都消失了。
DATA want;
SET SASHELP.CARS(KEEP=MSRP);
ATTRIB MSRP_to_text FORMAT=$8.;
MSRP_to_text = MSRP;
RUN;
换句话说,代码当前正在转换$36,945 -> "36945"
,但是我真正想要的是$36,945 -> "$36,945"
。
有没有办法将美元符号和逗号保留在字符串中?
答案 0 :(得分:1)
VVALUE
函数将检索变量的格式化值。
MSRP_as_text = VVALUE(MSRP);
VVALUEX
在变量名是动态的情况下又走了一步;例如存储在其他变量中,或通过某种名称模式算法计算得出。
name = 'MSRP';
formatted_value = VVALUEX(name);
答案 1 :(得分:0)
使用PUT函数代替ATTRIB语句将数字转换为Character。它将保持文本值的格式。由于MSRP的原始格式为DOLLAR8。 ,因此在put语句中使用相同的格式即可满足目的
DATA want;
SET SASHELP.CARS(KEEP=MSRP);
MSRP_to_text = put(MSRP, DOLLAR8.);
RUN;
proc contents data=want; run;