2017-03-27 66 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'._指定','。我錯過了什麼? –

相關問題