2017-03-27 61 views
2

我偶尔需要将数字更改为字符串,同时保持良好的数字格式(例如,以便将它们放入通过语法构建的句子中)。 这是很容易保持格式的小数部分,例如:将数字更改为字符串时保留数字格式

string MyTextN (a10). 
compute MyTextN=string(MyNumericN, f10.2). 

所以像12345.6789一些保存为这样的文字:“12345.68”。 我缺少的是1000的分隔符。我想要的文字是:“12,345.68”。 现在,我正在做一些文本操作来获得这个(通常循环数字,并在第四和第七之前插入逗号),但我想知道是否有一个内置的函数,我不知道,或者如果有人可以建议一个捷径? 谢谢!

回答

2

不幸的是,转换系统和后端通常不知道数字分组设置,所以字符串函数忽略它(这可能是大多数时候你想要的)。

您可以使用Python这一点,例如,

'{:,}'.format(123456789) 

'123,456,789'

的SPSSINC TRANS命令可以用来做到这一点,尽管它可能是矫枉过正。

下面是一个示例,其中x是要转换为字符串的变量。

begin program. 
def strWSeparators(x): 
    if x is not None: 
     return '{:,}'.format(x) 
    else: 
     return None 
end program. 

spssinc trans result=y type=15 
/formula "strWSeparators(x)". 

结果是一个15字节的字符串变量y

+0

感谢,以 “SPSSINC TRANS” 工作精美的作品。然而,一个问题是,缺失的值会使流程崩溃 - 您能否提出一种绕过它们的方法? –

+0

我更新了代码以允许缺少数据。系统缺失值的值为None。用户缺失按原样进入,但在命令的主要部分指定USERMISSING = SYSMIS来更改该行为。 – JKP

+0

嗯......我重新安装了最新版本的“TRANS”并运行了这个:'spssinc trans result = N1T type = 15 USERMISSING = SYSMIS/formula“strWSeparators(N1)” - 它仍然运行良好,第一个缺失的值,然后停止,并发出以下消息:_公式引用一个未定义的变量或无法评估:无法用's'._指定','。我错过了什么? –

相关问题