Stata編程小筆記5——無法destring怎么辦
2022-05-05 19:15 作者:deepwaterqh | 我要投稿
在數(shù)據(jù)處理過程,將字符型變量轉(zhuǎn)換為數(shù)值型變量是常見操作,可使用destring命令實現(xiàn)。然而,當該字符型變量含有除阿拉伯數(shù)字以外的其他字符時,比如英文字母、中文、奇奇怪怪的符號……直接使用destring會報錯(見下圖):

怎么辦?

情況1:知道該變量含有哪些非阿拉伯字符。
這種情況很好處理,直接在destring命令的option中加入ignore()就行了。例如:
clear
input str6 var1
"$20"
"1*"
end
destring var1,replace ignore("$" "*") ?//注意:字符之間用空格隔開

情況2:不知道該變量含有哪些非阿拉伯字符。
情況1是很理想的情況,大多數(shù)時候我們是不知道變量含有什么奇奇怪怪的字符,甚至有的時候,明明在excel中是數(shù)值型,導(dǎo)入到stata中就變成字符型,即使你一個個檢查,也看不出它跟數(shù)值型有什么不同,這就是hidden text characters。
針對這種情況,解決的方法很多,在stata forum中一搜,簡直八仙過海、各顯神通,有用正則表達式匹配的,有用charlist命令找出字符ASCII碼的……我覺得這些方法或多或少有點繁瑣,所以介紹另一種方法:strkeep +?destring。例如:
clear
input str6 var1
"$20"
"1*"
end
strkeep var1,replace numeric
destring var1,replace
其中,strkeep命令顧名思義——“保留你想保留的字符”,numeric表示我告訴stata要保留的字符是阿拉伯數(shù)字,其它閑雜人等通通拉出去。當然你還可以保留其他類型的字符,具體help?strkeep,拒絕伸手黨,哈哈。
在除去多余的字符之后,再使用destring即可。
標簽: