将带格式的数字转换为字符串

时间:2019-04-11 19:49:17

标签: sas

如何将数字或货币变量转换为将格式保留为字符串一部分的字符串?

例如,以下代码具有一个字符变量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"

有没有办法将美元符号和逗号保留在字符串中?

2 个答案:

答案 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;