2017-01-11 51 views
1

我有一個包含大量括號和其他標點符號的字符串變量,例如: _LSC債務許可工作。當我已經有一個指定的代碼列表時,如何輕鬆地將它轉換爲數字變量?即我不希望它自動重新編碼所有內容,因爲它對標籤使用了錯誤的值。SPSS將字符串轉換爲數字變量問題

回答

0

創建一個包含兩個變量的數據集:一個保存當前混亂名稱的字符串和一個保存新代碼的數字變量。然後,在原始數據集和按字符串排序的查找列表中,執行MATCH FILES指定表匹配(或使用數據>合併文件>添加變量)。

+0

當我嘗試輸入數值變量的值標籤時,我總是收到錯誤:值標籤(ADD)VALUE LABELS命令包含的值不是預期值(數字或字符串)的值。爲了與以前的系統兼容,加括號的值是可以接受的。直到下一個斜槓的所有值標籤都將被忽略。 – Rachael

+0

@蕾切爾,這是一個單獨的問題,請發佈一個新的問題。在這個問題中,請發佈您的數據樣本和相應的語法。 –

0

你可以準備一個單獨的文件,其中包括兩個變量:
- 一個包含每個原字符串變量的可能值的重新編碼(確保名稱和寬度都是一樣的原始變量)
- 第二個包含您要重新編碼的新值

當你設置此

,文件符合這樣的:

get file="filepath\Your_Value_Table.sav". 
sort cases by YourOriginalVarName. 
dataset name ValTab. 
get file="filepath\Your_Original_File.sav". 
sort cases by YourOriginalVarName. 
match files /file=* /table=ValTab /by YourOriginalVarName. 
exe. 

此時你的原始文件將包含有你想要的代碼的新的變量。

0

一般來說,我同意他人提供的解決方案。不過,我想建議一個額外的步驟,它可以使您的查找文件(請參閱eli-k和JKP的答案)好一點。

問題是你的字符串變量有很多圓括號和其他標點符號,可能也有不同的寫法。 例如: _LSC債務許可工作 LSC債務許可工作 _LSC債務許可工作 等 您可以創建一個查找表有三個變量:原始字符串變量的唯一值,那一個清理後的版本變量,最後是要附加的數字值。 清理版本的優點是,儘管它的寫法不同,但您可以更容易地識別相同的值。

你可以清理使用幾個功能:

string CleanedUpVersion (A40). 
compute CleanedUpVersion = REPLACE(RTIM(LTRIM(UPCASE(YourOriginalVarName))),'_',''). 
execute. 

在我們轉換爲大寫字母這個簡單的例子,刪除開頭和結尾的空白以及通過什麼替代它刪除下劃線。 總的來說,這可能有助於避免給原始變量中的唯一值賦予不同的數字,這意味着同一件事,而您希望它們具有相同的數字。