I dette indlæg viser jeg, hvordan man konverterer stringvariabler til numeriske variabler i Stata. Stringvariabler er vist med rødt . Hvis en numerisk variabel er gemt som en strengvariabel i Stata, har vi flere måder at konvertere dem til numeriske variabler på. Lad os starte med destring-kommandoen først.
Destring-kommandoen kan være det første valg til konvertering af strengvariabler til numeriske variabler, hvis vi har et begrænset antal ikke-numeriske tegn. Med denne kommando kan vi enten generere en ny variabel eller erstatte den eksisterende variabel. Her er et eksempel:
*First create a dummy datainput str15(price return)"120.25" ".10""122.25" ".12"end*Now destring the two variablesdestring price, replacedestring return, replace
Den ignorerende indstilling af destring
Hvis der er ikke-numeriske tegn i vores datasæt, vil destring-kommandoen vise en fejl
non-numeric characters found
For eksempel kan vores data have kommaadskillere, derfor vil destring generere ovenstående fejl. I sådanne tilfælde kan vi bruge indstillingen ignore(“,”), som fortæller Stata, at det givne tegn, dvs. ” ,”, skal ignoreres. Se følgende eksempel:
*First create a dummy datainput str15(price return)"12,000.25" ".10""12,200.25" ".12"end*Now destring the two variablesdestring price, replace ignore(",")
1.2 Liste over alle ikke-numeriske tegn
Vi kan liste over alle ikke-numeriske tegn ved hjælp af kommandoen tabulate og funktionen real(). Antag, at vores variabel strvar indeholder ikke-numeriske værdier
tabulate strvar if missing(real(strvar ))
Sæt, at ovenstående kode giver en liste med følgende ikke-numeriske tegn.
tabulate strvar if missing(real(strvar)) strvar | Freq. Percent Cum.------------+----------------------------------- #error | 1 0.00 0.00 #na | 1 0.00 0.00 . | 171,106 100.00 100.00 14* | 1 0.00 100.00------------+-----------------------------------
Overstående tabeller viser, at der er tre ikke-numeriske variabler i vores datasæt. Disse er #error, #na og *. Vi kan angive disse i indstillingen ignorere. Følgende kode opretter en ny variabel numvar
destring strvar, ignor("#error" "#na" "*") gen(numvar)