stata文本變量的處理

資料來源 :連玉君Stata 初級 研討班講義

以文字類型存儲的數(shù)字之轉(zhuǎn)換 -destring-

//說明:
//*- 從 .txt  文檔中讀入數(shù)值變量之所以會以文字值方式存儲踢星,
// *- 主要原因是變量中可能包含了如下特殊符號:
// *- 金額 `$' 联逻、逗號 `,' 驶沼、斜線 `/' 雷绢、百分比 `%' 、破折號 `-'
shellout "d202.txt"
 des
 sum
//*- 說明:雖然 code  變量由數(shù)字組成课梳,但其類型為 str7, 即為文字型變量
 // * leverage, size, date  都存在類似的問題
// *- 原理
use "d202.dta", clear
destring code, gen(code1) ignore(" ")
destring leverage, gen(lev) percent
//*- 整體處理方案
use "d202.dta", clear
destring code year date size lev, replace ignore(" -/,%") // 五個字符

純文字類別變量之轉(zhuǎn)換 -encode-, -rdecode-

use "d202.dta", clear
encode gov, gen(gov1)
labelbook
// *-  缺陷:
//* (1)  沒有 -replace-  選項(xiàng) [-rdecode-]
// * (2)  每次只能轉(zhuǎn)換一個變量距辆,無法實(shí)現(xiàn)批量轉(zhuǎn)換 [-rdecodeall-]
// *-rdecode-  命令:附加 replace  選項(xiàng) (self-reading)
use "d202.dta", clear
rencode gov, replace
label list gov // 另一種方式
// *- 說明:
//* (1)  與該命令功能相似的還有 -sencode-  命令
// * (2)  使用 -rdecodeall-  命令可以同時轉(zhuǎn)換多個變量
//*-encode  命令與 -destring-  的區(qū)別
// *-(1)  若數(shù)字 “ 誤存 ” 為文字型變量余佃,使用 -destring- 命令或 real()  函數(shù)
// *-(2)  若觀察值均為 “ 文字值 ” ,則需使用 -encode- 或 -rencode- 命令跨算,
// * 這些命令會自動產(chǎn)生【數(shù)字 - 文字對應(yīng)表】

*-2.7.2 將數(shù)字轉(zhuǎn)換成文字

//*- 某些情況下爆土,先把數(shù)字轉(zhuǎn)換成文字,
// *- 然后利用處理文字的函數(shù)進(jìn)行處理比較方便
//*- 范例 1 :年月日的組合
use "tostring.dta", clear
gen date = year + "-" + month + "-" + day
 gen edate = date(date, "YMD")
 format edate %td
 browse
//*- 范例 2 :年月日的分離
use "tostring2.dta", clear
browse
tostring date_pub, gen(date1)
gen year = substr(date1, 1, 4)
gen month = substr(date1, 5, 2)
gen day = substr(date1, 7, 2)
browse
destring year month day, replace
 browse
// *- 說明:
//* -decode- 命令的缺陷同樣在于沒有 -replace-  選項(xiàng)诸蚕,
//* 可以采用外部命令 -rdecode-  或 -sdecode-  代替之步势。-

文字樣本值的分解

use "d202.dta",clear
list
//*- 從 year  變量中提取年份 -split-
split year, parse(-)
order year year1 year2
list
browse
 gen year3 = real(year1) // year1 中全為數(shù)值,但以文字型存儲
// * destring year1, replace //  另一種方式
// *- 從 date  變量中提取年份挫望、月度和日期 , 并轉(zhuǎn)化為數(shù)值
 split date,parse(/) destring ignore("/")
order date date*
br

處理文字的函數(shù) (self-reading)

 help string functions
 help egen
 help egenmore // 外部命令 ,  提供了很多有用的文字和日期處理函數(shù)

// 文字函數(shù)簡介
dis lower("AbCDef")
dis length("price weight length mpg")
dis wordcount("price weight length mpg") // 統(tǒng)計(jì)變量的個數(shù)
dis proper("mR. joHn a. sMitH") //  規(guī)整人名
dis strmatch("C51", "C")
dis strmatch("C51", "C*") //  尋找制造業(yè)公司
dis trim(" I love STATA ") //  去掉兩端的空格
dis ltrim(" I love STATA ") //  去掉左邊的空格
dis rtrim(" I love STATA ") //  去掉右邊的空格
dis itrim(" I love STATA ") //  去掉中間的空格
dis itrim(" 內(nèi) 蒙 古 自治區(qū) ") //  去掉中間的空格立润,不奏效狂窑?
dis subinstr(" 內(nèi) 蒙 古 自治區(qū) ", " ", "", .)
//*- 釋義:
// * subinstr(s, s1,s2, n)
//* s1 “ 將被替換 ” 的字符串
// * s2 “ 替換成 ” 的字符串
// * n 前 n 個出現(xiàn)的目標(biāo)字符媳板,若為 “.” 則表示全部替換
dis subinstr(" 內(nèi) 蒙 古 自治區(qū) ", " ", "", 1)
dis subinstr(" 內(nèi) 蒙 古 自治區(qū) ", " ", "", 3)
//*- 說明:上述函數(shù)都可以用于 -generate-  命令來生成新的變量

//例 -1- :上市公司日期、行業(yè)代碼和所在地的處理
//*-a  待處理的數(shù)據(jù)
shellout "d203.txt"
insheet date sic location using "d203.txt", clear
save "d203.dta", replace
 browse
// *-b  從 date 中分離出年泉哈、月蛉幸、日
gen year = int(date/10000)
tostring date, gen(date1)
gen year1 = substr(date1,1,4)
gen year2 = real(year1)
gen month = substr(date1,5,2)
gen month1= real(month)
gen day = substr(date1,7,2)
gen day1 = real(day)
browse
//*- 更為簡潔的命令
use "d203.dta", clear
gen sdate = string(date,"%10.0g") // help string()
gen year = real(substr(string(date,"%10.0g"), 1, 4))
gen month = real(substr(sdate, 5, 2))
gen day = real(substr(sdate, 7, 2))
browse
drop sdate
//從行業(yè)大類 sic 中分離出行業(yè)門類
gen sic_men0 = substr(sic,1,1)
encode sic_men0, gen(sic_men)
tab sic_men
label list sic_men
// 從地點(diǎn)中分離出省份和城市
use "d203.dta",clear
list
gen province1 = substr(location, 1,2)
 gen city1 = substr(location, 4,4)
list location province1 city1
gen province2 = word(location, 1)
gen city2 = word(location, 2)
list location province1 city1 province2 city2
//*- 注意:每個英文字母占一位,但每個中文字符占兩位
//例 -2- :銀企關(guān)系數(shù)據(jù)中銀行名稱的提取

// *- 數(shù)據(jù)描述
 use "bankname.dta", clear
fre objnm
list in 1/15
//*- 任務(wù):提取出關(guān)聯(lián)銀行總部的名稱
 keep in 1/15
  gen bank = objnm
  replace bank=" 中國農(nóng)業(yè)銀行 " if strmatch(bank,"* 農(nóng)業(yè)銀行 *")
 replace bank=" 招商銀行 " if strmatch(bank,"* 招商 *")
 replace bank=" 中國銀行 " if strmatch(bank,"* 中國銀行 *")
 replace bank=" 中國工商銀行 " if strmatch(bank,"* 工商 *")
 replace bank=" 興業(yè)銀行 " if strmatch(bank,"* 興業(yè) *")
 replace bank=" 光大銀行 " if strmatch(bank,"* 光大 *")
 replace bank=" 交通銀行 " if strmatch(bank,"* 交通 *")
replace bank=" 北京銀行 " if strmatch(bank,"* 北京 *")
compress
 browse

文本分析的一些命令

help screening // 文字變量的清理 , Stata Journal 10-3
shellout "$R\screening.pdf" // 詳細(xì)說明和范例
help txttool // 文字變量的清理 , Stata Journal 14-4
shellout "$R\txttool.pdf"
help tex_equal // 多個文本的對比
help fren // 修改文件名稱
help fdta // 替換文字變量的內(nèi)容
help tex2col // 文本表格轉(zhuǎn)化為變量 ,  適合提取網(wǎng)頁或 PDF 文件中的表格
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丛晦,一起剝皮案震驚了整個濱河市奕纫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌烫沙,老刑警劉巖匹层,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锌蓄,居然都是意外死亡升筏,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門瘸爽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來您访,“玉大人,你說我怎么就攤上這事剪决×橥簦” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵柑潦,是天一觀的道長享言。 經(jīng)常有香客問我,道長渗鬼,這世上最難降的妖魔是什么览露? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮乍钻,結(jié)果婚禮上肛循,老公的妹妹穿的比我還像新娘铭腕。我一直安慰自己,他們只是感情好多糠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布累舷。 她就那樣靜靜地躺著,像睡著了一般夹孔。 火紅的嫁衣襯著肌膚如雪被盈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天搭伤,我揣著相機(jī)與錄音只怎,去河邊找鬼。 笑死怜俐,一個胖子當(dāng)著我的面吹牛身堡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拍鲤,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼贴谎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了季稳?” 一聲冷哼從身側(cè)響起擅这,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎景鼠,沒想到半個月后仲翎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铛漓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年溯香,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片票渠。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡逐哈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出问顷,到底是詐尸還是另有隱情昂秃,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布杜窄,位于F島的核電站肠骆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏塞耕。R本人自食惡果不足惜蚀腿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧莉钙,春花似錦廓脆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚊伞,卻和暖如春席赂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背时迫。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工颅停, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掠拳。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓癞揉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親碳想。 傳聞我的和親對象是個殘疾皇子烧董,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 今天的主角——z先生,我老公胧奔。 兩天前的午飯中,z先生预吆,我準(zhǔn)備這兩天碼一篇關(guān)于你的文章龙填。 寫什么,有什么好寫的拐叉?寫...
    2hz閱讀 617評論 5 8
  • 一直覺得和用戶接觸不夠岩遗,正好借此機(jī)會,設(shè)計(jì)一套“保持與用戶接觸”的方案凤瘦,希望后期能多跟用戶保持溝通交流宿礁,更加直觀的...
    Rr2016閱讀 309評論 0 0
  • 1. 閨蜜最近一直被家里催婚,說是因?yàn)楹同F(xiàn)在的男朋友交往了快五年了蔬芥,該到了結(jié)婚的年紀(jì)了梆靖。 閨蜜其實(shí)也不是沒有想過,...
    貳鷲閱讀 397評論 1 1
  • 今天是我的生日笔诵,現(xiàn)在已經(jīng)凌晨5點(diǎn)了返吻,天還是很黑,我在家里等著天亮乎婿。6點(diǎn)了测僵,我媽說覺得我有點(diǎn)感冒,于是摸了摸我的頭谢翎,...
    1801景智潤閱讀 148評論 0 0