我想將諸如「13232C」之類的代碼轉換爲數字值。可能爲A到Z分配值1到26,然後新代碼將是「132323」。從sas中的字符值創建數字值
回答
如果代碼中只有1個字母,則此代碼將可用。如果還有更多,那麼你將需要掃描每一個來獲得價值。我通過從ASCII值(A = 65)中減去64來計算字母值(1-26),確保在必要時將字母轉換爲大寫。我也認爲,這封信總是出現在字符串的結尾
data have;
input code $;
datalines;
132323C
24578D
5147896G
;
run;
data want;
set have;
new_code=input(cats(compress(code,,'dk'),rank(compress(upcase(code),,'ak'))-64),best12.);
run;
我應該補充一點,如果您需要引用從字母計算出的數字,您可能需要將新變量保留爲字符。這隻有當你的原始字符串是固定長度時纔可能,在我的例子中我使用了可變長度。希望我已經給你足夠的方法來爲你的目的進行修改。 – Longfish 2013-04-11 10:39:25
不錯的解決方案。十分優雅。 – itzy 2013-04-11 14:54:51
此代碼完美工作。非常感謝你 – user2269241 2014-03-14 10:32:37
Keith的解決方案可能是大多數使用更好,但我不禁看到這是一個很好的機會與PROC鈣鎂磷肥玩(函數編譯)。這在您只有A-I的情況下效果很好;從J開始它將不起作用,因爲我只允許單個角色的空間。如果它可以有2位數字,那麼FCMP需要改變,以做Keith的解決方案。
proc fcmp outlib=work.funcs.trial;
function cton(charvar $) $;
do n = 1 to length(charvar);
if 48 le rank(char(charvar,n)) le 57 then ;
else substr(charvar,n,1) = put(rank(upcase(char(charvar,n)))-64,1.);
put charvar;
end;
return (charvar);
endsub;
quit;
options cmplib=work.funcs;
data test;
x="23456CAB";
y = cton(x);
put x= y=;
run;
我也回擊一個角色,但是這並不重要 - 你可以返回它作爲一個數字,如果你喜歡(我在原來的問題看到了「」)。
- 1. 如何從SAS中的字符串創建數字格式?
- 2. php從字符串值創建函數
- 3. 從創建的字符串獲取字符串整數的值
- 4. 從值的字符串創建refinementList
- 5. 從字符串值創建控制
- 6. 從innerhtml字符串值創建javascript timestamp
- 7. 將分類字符變量轉換爲SAS中的數字值
- 8. 從字典的鍵和值中創建字符串
- 9. 的JavaScript:從UTF-8值創建一個字符串或字符
- 10. 從數組中的特定鍵/值創建一個字符串
- 11. SAS打印特殊字符的ASCII值
- 12. 總結通過字符值在SAS
- 13. 動態創建的字符串插值
- 14. 從java中的字符串值獲取數字值
- 15. 從字符串值的數字增量
- 16. 字符到數字在SAS
- 17. 如何從C宏的值中創建一個字符串?
- 18. 反思 - 從一個字符串值,創建數據類型
- 19. 如何從字符串分隔值創建一個數組?
- 20. 如何使用javascript從字母數字字符串值中分割數字值?
- 21. 從javascript中的字母數字字符串獲取數值
- 22. 從數字範圍創建字符串
- 23. 使用數組值創建一個SimpleXML值字符串
- 24. 字符串值的數字值
- 25. 字符串的數字值
- 26. 使用數字和轉義字符創建SQL值?
- 27. RegSetValueEx不會創建字符串值
- 28. 基於字符串值創建實例
- 29. 從C中的字符串數組創建字符串
- 30. 從字符串表中的字符創建計數表
總是隻有1個字符值嗎? – Longfish 2013-04-11 07:52:31